Skip to content

Commit

Permalink
parse hash tags
Browse files Browse the repository at this point in the history
  • Loading branch information
ntedgi committed Jan 4, 2019
1 parent e212543 commit 1e1f510
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 22 deletions.
2 changes: 1 addition & 1 deletion algo/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const hashTagParser = require('./lib/search')
const p = async () => {
let y = await hashTagParser('3-gaza')
let y = await hashTagParser('freegazaorg')
const { words, texts } = y
if (words.length > 0) console.log(words.join())
texts.forEach(post => {
Expand Down
20 changes: 16 additions & 4 deletions algo/lib/search.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
let Twitter = require('twitter')
let fs = require('fs')
const getTwitterClient = () => {
const creds = {
consumer_key_1: 'xPgfl66A3zYYuR8X9DgbcLaez',
Expand Down Expand Up @@ -54,7 +53,6 @@ const arrayConcatIsTheString = (res, str) => {
}

const splitByAns = res => {
let result = []
let dict = new Set()
res = res.filter(e => e.length > 0)
res.forEach(phrase => {
Expand All @@ -73,7 +71,7 @@ const calculateWordsSupport = texts => {
let wordsCounts = {}
texts.forEach(element => {
element = element.split(' ')
let arr = element.reduce((ac, cur) => {
element.reduce((ac, cur) => {
cur = cur.replace(/[^0-9a-z]/gi, '')
if (ac[cur]) ac[cur] += 1
else ac[cur] = 1
Expand Down Expand Up @@ -101,7 +99,7 @@ const findHashTagOrEquivelentInKeys = (cleanQuery, keys) => {
keys = keys.map(e => cleanText(e))
keys.forEach(e => {
let cleanTerm = e.toLowerCase()
if (cleanTerm == cleanQuery || cleanTerm.replace('#', '') == cleanQuery) {
if (cleanTerm == cleanQuery) {
candidates.push(e)
}
})
Expand All @@ -114,6 +112,7 @@ const splitHashes = hashTags => {
}

const countWords = (texts, queryTerm) => {

const wordsCounts = calculateWordsSupport(texts)

let keys = Object.keys(wordsCounts)
Expand Down Expand Up @@ -150,9 +149,22 @@ const changeNumbersToWords = query => {
})
return q
}

const removeCommonPostfix =query =>{
const commonPostfix = ["org"]
commonPostfix.forEach(e=>{
if(query.endsWith(e)){
query = query.slice(0,e.length*-1)
}
})
return query
}

const handleQuery = query => {
query = removeHashTagSeparators(query)
query = changeNumbersToWords(query)
query = removeCommonPostfix(query)

return query
}
module.exports = query => {
Expand Down
35 changes: 18 additions & 17 deletions algo/test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,31 @@ const expect = chai.expect

const hashTagParser = require('../lib/search')

const p = async quary => {
const excute = async quary => {
let y = await hashTagParser(quary)
return y.words
}


const testCases = [
'#freegaza',
'#FREEGAZA',
'#freegazaorg',
'#FreeGaza',
'#3Gaza',
'#free_gaza',
'#FREE_GAZA',
'#freeGAZA',
'#FreeGAZA',
'#freeGaza'
]

describe('Hash Tag Parser.', () => {
describe("Unit Test's", () => {
it('#freegaza => [free , gaza]', async () => {
const x = await p('#freegaza')
expect(x).to.be.equalTo(['free', 'gaza'])
testCases.forEach(element => {
it(`${element} => [free , gaza]`, async () => {
const result = await excute(element)
expect(result).to.be.equalTo(['free', 'gaza'])
})
})
})
})


// hashtagsParser("#freetibet") // = > ["Free", "Tibet"]
// hashtagsParser("#FREETIBET") // = > ["Free", "Tibet"]
// hashtagsParser("#freetibetorg") // = > ["Free", "Tibet"]
// hashtagsParser("#FreeTibet") // = > ["Free", "Tibet"]
// hashtagsParser("#3Tibet") // = > ["Free", "Tibet"]
// hashtagsParser("#free_tibet") // = > ["Free", "Tibet"]
// hashtagsParser("#FREE_TIBET") // => ["Free", "Tibet"]
// hashtagsParser("#freeTIBET") // => ["Free", "Tibet"]
// hashtagsParser("#FreeTIBET") // => ["Free", "Tibet"]
// hashtagsParser("#freeTibet") // => ["Free", "Tibet"]

0 comments on commit 1e1f510

Please sign in to comment.