Esempio n. 1
0
 /**
  * @group parser
  */
 public function testParseHashTags()
 {
     $this->assertContains('#hash', Tags::parseHashTags('test #hash test')['parsed']);
     $this->assertContains('#hash', Tags::parseHashTags('#hash')['parsed'], 'full');
     $this->assertContains('#hash', Tags::parseHashTags('test #hash')['parsed'], 'end');
     $this->assertContains('#hash', Tags::parseHashTags('#hash test')['parsed'], 'start');
     $this->assertContains('#hash', Tags::parseHashTags('test #hash, test')['parsed'], 'separator ","');
     $this->assertContains('#hash', Tags::parseHashTags('test #hash! test')['parsed'], 'separator "!"');
     $this->assertContains('#hash', Tags::parseHashTags('test #hash?')['parsed'], 'separator "?"');
     $this->assertContains('#hash2', Tags::parseHashTags('test #hash1 test #hash2.')['parsed'], 'multiple');
     $this->assertContains('#hash-tag', Tags::parseHashTags('test #hash-Tag test')['parsed'], 'lowercase');
     $this->assertCount(3, Tags::parseHashTags('test #hash1 test #hash2 #hash5')['parsed'], 'multiple - count');
     $this->assertCount(1, Tags::parseHashTags('test #hash test #hash')['parsed'], 'repeated as single');
     $this->assertCount(0, Tags::parseHashTags('test hash1 tst hash2 hash5')['parsed'], 'not found, empty array');
     $this->assertCount(0, Tags::parseHashTags('www.example.com#test www.example.com/#test')['parsed'], 'not found when link');
     $this->assertContains('#hash-Tag', Tags::parseHashTags('test #hash-Tag test')['original'], 'original');
 }
 /**
  * @param Question $question
  * @param bool $saveTagsInEntity
  */
 public function addForQuestion(Question $question, $saveTagsInEntity = true)
 {
     $em = $this->getEntityManager();
     if ($question instanceof PollPetition) {
         $tags = HashTagParser::parseHashTags($question->getPetitionBody());
     } else {
         $tags = HashTagParser::parseHashTags($question->getSubject());
     }
     foreach ($tags['parsed'] as $tag) {
         $entity = $this->findOneByName($tag);
         if (!$entity) {
             $entity = new HashTag($tag);
             $em->persist($entity);
         }
         $entity->addQuestion($question);
         $em->flush($entity);
     }
     if ($saveTagsInEntity) {
         $question->setCachedHashTags($tags['original']);
         $em->flush($question);
     }
 }