Skip to content

Commit 034ca67

Browse files
authored
Merge pull request #102 from gRegorLove/camelcase
Added failing tests and fix for classes with numbers and camelCase.
2 parents 5eb18fd + 3092e87 commit 034ca67

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

Mf2/Parser.php

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ function unicodeTrim($str) {
127127
function mfNamesFromClass($class, $prefix='h-') {
128128
$class = str_replace(array(' ', ' ', "\n"), ' ', $class);
129129
$classes = explode(' ', $class);
130+
$classes = preg_grep('#^[a-z\-]+$#', $classes);
130131
$matches = array();
131132

132133
foreach ($classes as $classname) {

tests/Mf2/ParserTest.php

+78
Original file line numberDiff line numberDiff line change
@@ -422,4 +422,82 @@ public function testWhitespaceBetweenElements() {
422422
$this->assertContains('h-entry', $output['items'][0]['type']);
423423
$this->assertNotContains('attendingHomebrew', $output['items'][0]['properties']['name'][0]);
424424
}
425+
426+
427+
/**
428+
* @see http://www.kevinmarks.com/twitterutils.html
429+
*/
430+
public function testCamelCaseClassNames() {
431+
$input = <<<EOT
432+
<div class="EmbeddedTweet js-clickToOpenTarget" data-click-to-open-target="https://twitter.com/kevinmarks/status/700752598123433985" data-iframe-title="Twitter Tweet" data-dt-full="%{hours12}:%{minutes} %{amPm} - %{day} %{month} %{year}" data-dt-months="Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec" data-dt-am="AM" data-dt-pm="PM" data-dt-now="now" data-dt-s="s" data-dt-m="m" data-dt-h="h" data-dt-second="second" data-dt-seconds="seconds" data-dt-minute="minute" data-dt-minutes="minutes" data-dt-hour="hour" data-dt-hours="hours" data-dt-abbr="%{number}%{symbol}" data-dt-short="%{day} %{month}" data-dt-long="%{day} %{month} %{year}" data-scribe="page:tweet" id="twitter-widget-0" lang="en" data-twitter-event-id="0">
433+
434+
<div class="EmbeddedTweet-tweet">
435+
<blockquote class="Tweet h-entry js-tweetIdInfo subject expanded
436+
is-deciderHtmlWhitespace" cite="https://twitter.com/kevinmarks/status/700752598123433985" data-tweet-id="700752598123433985" data-scribe="section:subject">
437+
<div class="Tweet-header u-cf">
438+
<div class="Tweet-brand u-floatRight">
439+
<span class="u-hiddenInNarrowEnv">
440+
<a class="FollowButton follow-button profile" data-scribe="component:followbutton" href="https://twitter.com/kevinmarks" role="button" title="Follow Kevin Marks on Twitter"><span class="FollowButton-bird"><div class="Icon Icon--twitter " aria-label="" title="" role="presentation"></div></span> Follow</a>
441+
</span>
442+
<span class="u-hiddenInWideEnv"><a href="https://twitter.com/download" data-scribe="element:logo"><div class="Icon Icon--twitter " aria-label="Get Twitter app" title="Get Twitter app" role="img"></div></a></span>
443+
</div>
444+
445+
<div class="TweetAuthor" data-scribe="component:author">
446+
<a class="TweetAuthor-link Identity u-linkBlend" data-scribe="element:user_link" href="https://twitter.com/kevinmarks" aria-label="Kevin Marks (screen name: kevinmarks)">
447+
<span class="TweetAuthor-avatar Identity-avatar">
448+
<img class="Avatar" data-scribe="element:avatar" data-src-2x="https://pbs.twimg.com/profile_images/553009683087114240/tU5HkXEI_bigger.jpeg" alt="" data-src-1x="https://pbs.twimg.com/profile_images/553009683087114240/tU5HkXEI_normal.jpeg" src="https://pbs.twimg.com/profile_images/553009683087114240/tU5HkXEI_normal.jpeg">
449+
</span>
450+
<span class="TweetAuthor-name Identity-name customisable-highlight" title="Kevin Marks" data-scribe="element:name">Kevin Marks</span>
451+
452+
<span class="TweetAuthor-screenName Identity-screenName" title="@kevinmarks" data-scribe="element:screen_name">@kevinmarks</span>
453+
</a>
454+
</div>
455+
456+
</div>
457+
458+
<div class="Tweet-body e-entry-content" data-scribe="component:tweet">
459+
<p class="Tweet-text e-entry-title" lang="en" dir="ltr">I wish people would stop using u- as a prefix for utility classes in CSS. Use util- instead. You're messing with my microformats.</p>
460+
461+
462+
<div class="Tweet-metadata dateline">
463+
464+
465+
<a class="u-linkBlend u-url customisable-highlight long-permalink" data-datetime="2016-02-19T18:43:33+0000" data-scribe="element:full_timestamp" href="https://twitter.com/kevinmarks/status/700752598123433985">
466+
<time class="dt-updated" datetime="2016-02-19T18:43:33+0000" pubdate="" title="Time posted: 19 Feb 2016, 18:43:33 (UTC)">10:43 AM - 19 Feb 2016</time></a>
467+
</div>
468+
469+
470+
<ul class="Tweet-actions" data-scribe="component:actions" role="menu" aria-label="Tweet actions">
471+
<li class="Tweet-action">
472+
<a class="TweetAction TweetAction--reply web-intent" href="https://twitter.com/intent/tweet?in_reply_to=700752598123433985" data-scribe="element:reply"><div class="Icon Icon--reply TweetAction-icon" aria-label="Reply" title="Reply" role="img"></div></a></li>
473+
<li class="Tweet-action">
474+
<a class="TweetAction TweetAction--retweet web-intent" href="https://twitter.com/intent/retweet?tweet_id=700752598123433985" data-scribe="element:retweet"><div class="Icon Icon--retweet TweetAction-icon" aria-label="Retweet" title="Retweet" role="img"></div> <span class="TweetAction-stat" data-scribe="element:retweet_count" aria-hidden="true">1</span>
475+
<span class="u-hiddenVisually">1 Retweet</span>
476+
</a></li>
477+
<li class="Tweet-action">
478+
<a class="TweetAction TweetAction--heart web-intent" href="https://twitter.com/intent/like?tweet_id=700752598123433985" data-scribe="element:heart"><div class="Icon Icon--heart TweetAction-icon" aria-label="Like" title="Like" role="img"></div> <span class="TweetAction-stat" data-scribe="element:heart_count" aria-hidden="true">4</span>
479+
<span class="u-hiddenVisually">4 likes</span>
480+
</a></li>
481+
</ul>
482+
</div>
483+
</blockquote>
484+
</div>
485+
</div>
486+
EOT;
487+
488+
$output = Mf2\parse($input);
489+
490+
$this->assertArrayNotHasKey('linkBlend', $output['items'][0]['properties']);
491+
$this->assertArrayNotHasKey('hiddenInNarrowEnv', $output['items'][0]['properties']);
492+
$this->assertArrayNotHasKey('floatRight', $output['items'][0]['properties']);
493+
}
494+
495+
496+
public function testClassNameNumbers() {
497+
$input = '<div class="h-entry"> <div class="u-column1"> <p class="p-title">Test</p> </div> </div>';
498+
$output = Mf2\parse($input);
499+
500+
$this->assertArrayNotHasKey('column1', $output['items'][0]['properties']);
501+
}
502+
425503
}

0 commit comments

Comments
 (0)