2014-05-05T09:46:53 GwenDragon//EDIT:
URI::Find::UTF8 schon gesehen?
'A-Za-z0-9\-\.', # Domain part ... don't care about IDN yet
1
2
3
4
5
6
7
~/test/uri-find(IDNA|✔)$ perl -e'use Data::Dumper;BEGIN{unshift @INC,"./lib";}use URI::Find;my @uris;my $finder = URI::Find->new(sub {my($uri) = shift;push @uris, $uri;});my $text="das ist http://höhö.example/bianca dbdf";$finder->find(\$text);print Dumper \@uris;'
$VAR1 = [
bless( [
bless( do{\(my $o = 'http://xn--hh-xeab6dc.example/bianca')}, 'URI::http' ),
undef
], 'URI::URL' )
];
2014-05-05T11:09:32 GwenDragonDas ist die Kodierung nach IDNAs Punycode.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); if (eval "use URI::Find; 1;") { my $finder = URI::Find->new( sub { return sprintf($link,@_); } ); my $call = sub { return $_[0]; }; if ($email_link ne '' && eval "use Email::Find; 1;" ) { my $finder = Email::Find->new( sub { return sprintf($email_link,$_[0]->format,$_[1]); } ); $call = sub { my $text = shift; $finder->find(\$text); return $text; }; } $finder->find($text,$call); }
QuoteWas mache ich da falsch?D:\arbeit> git checkout -b IDNA origin/IDNA
fatal: Not a git repository (or any of the parent directories): .git
2014-05-05T12:19:21 GwenDragonDas ist von 2009.
Ja, wenns läuft passt es doch.
2014-05-05T16:36:39 GwenDragonDann lass es, wenn dir funktionierende Lösungen nicht gefallen. Frickel halt selbst.
2014-05-05T16:37:54 biancaWeil manche Leute Module schlecht pflegen oder keien Zeit haben. Was weiß ich.Ja aber ich verstehe nicht, wie die in eine Uraltversion etwas einbauen, obwohl es längst eine neue gibt.
2014-05-05T16:53:13 GwenDragonWas hindert dich daran, den patch in die neuen zu übernehmen? Mangelndes Wissen?
2014-05-05T17:16:08 biancaJa, daran scheitert es. Wenn ich jetzt wüßte, welche Zeilen ich in der 2011er durch welchen Code ersetzen muss würde ich mir eine eigene Version bauen, das wäre OK.
2014-05-05T16:37:54 biancaJa aber ich verstehe nicht, wie die in eine Uraltversion etwas einbauen, obwohl es längst eine neue gibt.
Warum macht man sowas?
2014-05-05T17:12:06 biancaUnd wieso enthält die Version von 2011 die Reparaturen von 2009 nicht?
2014-05-05T16:35:28 GwenDragonDass der Patch als diff-Datei im BugTracker auf https://rt.cpan.org/Public/Bug/Display.html?id=442... zu finden ist.
2014-05-05T16:41:24 GwenDragonDu hast noch nie wirklich programmiert?
2014-05-05T16:41:24 GwenDragonWie Patch und diff funktionieren:
2014-05-05T17:14:26 biancaAber ausprobieren willst du nicht, ob das 2009er Modul dann klappt? OK.Wenn ich dadurch nur die 2009er bekomme ist das für mich nicht interessant.
use URI::Escape;
return $uri;
return uri_unescape($uri);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
#!/usr/bin/perl -W use strict; use warnings; use diagnostics; use Data::Dumper; my $testtext = <<TEXTPLAIN; Dies ist ein kleiner Test zur Erkennung von Hyperlinks test.de oder www.test.de oder http://www.test.de oder https://www.testhttps.de test Platzhalter ||2|||||||||||| oder (http://test.de/slash/pfad) oder info\@test.example Und hier ein Gemeinschaftstest: http://www.test.de/login_index.php?email=info\@test.example mal schauen... http://www.orthopäden-hennef.de und noch das Dach ^ TEXTPLAIN my $txt=$testtext; identifylinks(\$txt,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$txt</pre>"; #--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); if (eval "use URI::Find_eigenpatch; 1;") { my $finder = URI::Find->new( sub { return sprintf($link,@_); } ); my $call = sub { return $_[0]; }; if ($email_link ne '' && eval "use Email::Find; 1;" ) { my $finder = Email::Find->new( sub { return sprintf($email_link,$_[0]->format,$_[1]); } ); $call = sub { my $text = shift; $finder->find(\$text); return $text; }; } $finder->find($text,$call); } }
Quote<a href="http://www.orthop/" target="_blank">http://www.orthop/</a>õden-hennef.de
QuoteCan't locate object method "new" via package "URI::Find_eigenpatch"
1
2
3
4
git merge IDNA
(Konflikt lösen in t/unicode.t)
cd lib
patch -p2 < download-der-patch-datei.patch
1
2
3
4
5
6
7
8
9
10
11
12
% perl bianca.pl
<pre>Dies ist ein kleiner
Test zur Erkennung von Hyperlinks test.de oder www.test.de oder <a href="http://www.test.de/" target="_blank">http://www.test.de</a>
oder <a href="https://www.testhttps.de/" target="_blank">https://www.testhttps.de</a>
test Platzhalter ||2||||||||||||
oder (<a href="http://test.de/slash/pfad" target="_blank">http://test.de/slash/pfad</a>)
oder info@test.example
Und hier ein Gemeinschaftstest: <a href="http://www.test.de/login_index.php?email=info@test.example" target="_blank">http://www.test.de/login_index.php?email=info@test.example</a>
mal schauen...
<a href="http://www.xn--orthopden-hennef-0nb.de/" target="_blank">http://www.orthopäden-hennef.de</a>
und noch das Dach ^
</pre>
2014-05-05T21:41:48 RaubtierDie meisten Browser machen das. Aber, nur wenn die Browser korrekt eingestellt sind, dass sie Nicht-ASCII als UTF8-Zeichen ersetzen, klappts.Ich frage mich allerdings, warum überhaupt die Punycode-Ersetzung durchgeführt wird. Können das die Browser nicht selbst?
2014-05-06T07:05:20 GwenDragonWarum nimmst du nich die IDNA-Version (Find.pm)?
2014-05-06T15:30:02 Raubtier- ich habe irgendwo geschrieben, dass der Branch problemlos mit master gemerget werden kann. Also schon mal kein Problem wegen alter Versionen.
2014-05-06T15:30:02 Raubtier- für weiteres Vorgehen habe ich auch bereits geschrieben, dass man ja mal den Maintainer fragen könnte, warum der Branch bislang nicht gemerget wurde.
2014-05-06T15:30:02 RaubtierDu bist ja lange genug hier, um sowas auch mal selbst machen zu können.
2014-05-06T16:10:27 biancaMit lange hier sein hat das nichts zu tun, wenn man sich mit dem ganzen GIT Feld nicht auskennt.
QuoteIch kann mich nicht mit allem beschäftigen, was es auf dieser Welt gibt.
2014-05-06T16:55:26 pqmir scheint eher, dass es an erfahrung mit versionsverwaltung im allgemeinen fehlt, kann das sein?
2014-05-06T16:55:26 pqich vermute mal, du arbeitest halt eher alleine an deinen skripts, und da ist die motivation/der bedarf zu gering, branches zu erstellen.
2014-05-06T16:55:26 pqversionsverwaltung ist was ziemlich essentielles für programmierer.
2014-05-06T17:50:15 bianca2014-05-06T16:55:26 pqversionsverwaltung ist was ziemlich essentielles für programmierer.
Ja, glaub ich, bin ich aber nicht.
2014-05-07T09:06:16 pqich werd dich dran erinnern, wenn du mal wieder mit einem selbstgeschriebenen stück code herkommst und um hilfe bittest.
2014-05-07T09:49:11 biancaDarf ich jetzt deshalb hier keine Fragen mehr stellen?
2014-05-07T11:56:43 pqmir ist es doch egal, wie du dich nennst.
du schreibst gerade so wenig code, dass du dich nicht programmierer nennen magst, und du glaubst, damit hast du einen guten grund, dass du von versionsverwaltung keine ahnung haben brauchst.
2014-05-06T09:42:04 biancaBenutzt du auch das Modul
2014-05-06T16:58:31 pqich plane gar nix.
2014-05-06T07:51:03 biancaJa, wenn man wenig erfahren ist, wird das schwierig.Da sind schon einige gravierende Unterschiede zu sehen.
Ich hab jetzt ein bisschen Angst, dass ich durch Verwendung der älteren Version mir andere Bugs einhandle, die in der 20111103 schon behoben waren.
QuoteJa, so eine Unsicherheit bleibt dann.Denn was nützt es mir, wenn damit die Umlaute klappen aber irgendwas anderes nicht, was ich jetzt nicht weiß sondern bei der Nutzung irgendwan irgendwo auffällt, wo man dann wieder stundenlang nach der Ursache sucht?
2014-05-06T15:28:16 GwenDragonim Changelog der letzten Version von URI::Find sehen.
2014-05-06T16:26:09 GwenDragonVielleicht kannst du was damit anfangen: https://metacpan.org/changes/distribution/URI-Find
2014-05-06T17:00:42 pqhast du noch nie in ein changelog eines moduls geschaut?
2014-05-06T17:00:42 pqauf metacpan.org und search.cpan.org ist das jeweils verlinkt.
2014-05-06T17:53:46 biancaSDie sind ja im t-Verzeichnis eines gezppten Moduls zu finden.Man bräuchte doch wenigstens jeweils Testfälle, damit man die Änderung nachvollziehen und testen kann.
2014-05-06T17:56:50 GwenDragonDie sind ja im t-Verzeichnis eines gezppten Moduls zu finden.
2014-05-06T15:28:16 GwenDragonVielleicht mach ich's in den nächsten Tagen/Wochen.Ich habe gerade einfach keine Geduld das Modul zu patchen und auch noch zu testen.
2014-05-06T17:59:05 GwenDragonVielleicht mach ich's in den nächsten Tagen/Wochen.
2014-05-06T17:59:05 GwenDragonOb so ein patch angenommen wird, ist aber für mich fraglich.
2014-05-06T07:05:20 GwenDragonWarum nimmst du nich die IDNA-Version (Find.pm)?
1
2
3
(Klammertest http://www.example.de)<br>Test
Linebreaktest
http://example.com<br><br>test
1
2
3
(Klammertest <a href="http://www.example.de)<br>test/" target="_blank">http://www.example.de)<br>Test</a>
Linebreaktest
<a href="http://example.com<br><br>test/" target="_blank">http://example.com<br><br>test</a>
1
2
3
(Klammertest <a href="http://www.example.de/" target="_blank">http://www.example.de</a>)<br>Test
Linebreaktest
<a href="http://example.com/" target="_blank">http://example.com</a><br><br>test
1 2 3 4
my $domain = qr{[^:/?#\s<>]+}; my $path = qr{/[^?#\s]*}; ... return qr{ $scheme : (?://)? $domain (?:$path)? (?:$query)? (?:$fragment)? }x;
2014-05-07T05:52:47 RaubtierIm Prinzip musst du nur mal in die sub uri_re schauen.
2014-05-07T05:52:47 RaubtierWenn man 3 Zeilen ersetzt
1 2 3 4 5 6 7
sub uri_re { @_ == 1 || __PACKAGE__->badinvo; my($self) = shift; return sprintf '%s:[%s][%s#]*', $schemeRe, $uricCheat, $self->uric_set; }
2014-05-18T20:40:48 RaubtierWenn ich mich recht entsinne, hatte ich den idn-Branch in Master gemerget und dann diese Änderung vorgenommen.
QuoteI don't plan on doing more work on URI::Find myself. You're welcome to
have a try at it. The repository is here.
https://github.com/schwern/uri-find/
There have been several attempts to make URI::Find work with Unicode.
More technically known as "Internationalized Domain Names In
Applications" with the acronym IDNA.
https://en.wikipedia.org/wiki/Internationalized_do...
Since those tries, things have gotten easier. Mostly because URI.pm now
supports Unicode.
2014-06-24T14:41:10 janWieso soll er sich für dich Arbeit machen?
2014-06-24T14:41:49 GwenDragonWahrscheinlich müssen wir wohl selber patchen und testen :(