@@ -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