Exemplo n.º 1
0
    def post(self):
        self.response.headers['Content-Type'] = 'text/html'
        action = self.request.get('button')
        user = users.get_current_user()

        user_key = ndb.Key('MyUser', user.user_id())
        user_info = user_key.get()

        if action == 'Add':
            original_word = (self.request.get('Word')).lower()

            if not re.match("^[a-z]*$", original_word.lower()):
                message = "Please enter alphabets only"

            else:

                Word = lexi(self.request.get('Word'))
                anagram_key = ndb.Key('Anagram', user.email() + Word)
                anagram = anagram_key.get()
                # & anagram.User != user
                if anagram == None:
                    new_anagram = Anagram(id=user.email() + Word,
                                          AnagramKey=Word)
                    new_anagram.User = user.email()
                    new_anagram.WordList.append(original_word)
                    new_anagram.WordCount = 1
                    new_anagram.LetterCount = len(original_word)
                    new_anagram.put()

                    user_info.myAnagram = user_info.myAnagram + 1
                    user_info.myWordCount = user_info.myWordCount + 1
                    user_info.put()

                    message = "Word added"

                else:
                    flag = False
                    for word in anagram.WordList:
                        if word == original_word:
                            flag = True
                            break
                        else:
                            flag = False

                    if flag:
                        message = "Word already exists"
                    else:
                        # anagram.User=user.email()
                        anagram.WordList.append(original_word)
                        anagram.WordCount = anagram.WordCount + 1
                        anagram.put()
                        message = "Word added"

                        user_info.myWordCount = user_info.myWordCount + 1
                        user_info.put()

            template_values = {'message': message}
            template = JINJA_ENVIRONMENT.get_template('add.html')
            self.response.write(template.render(template_values))
Exemplo n.º 2
0
    def post(self):

        self.response.headers["Content-Type"] = "text/html"

        file = self.request.get("textfile")
        openFile = open(file)
        readLine = openFile.readline()

        while readLine:

            text_word = (readLine.strip('\n\r')).lower()
            sorted_key = Services().sorted_key(word=text_word)

            list_word = Anagram.query()
            list_word = list_word.filter(
                Anagram.anagram_key == sorted_key,
                Anagram.user_id == Services().get_current_user_id())
            list_word = list_word.fetch()

            valid_permutation = Services().validpermutations(text=sorted_key)

            if len(valid_permutation) > 0:

                if len(list_word) > 0:

                    anagram = list_word[0]

                    if text_word not in anagram.inputed_words:
                        inputed_words = anagram.inputed_words
                        inputed_words.append(text_word)
                        anagram.inputed_words = inputed_words
                        anagram.inputed_words_count = anagram.inputed_words_count + 1
                        anagram.put()

                else:

                    new_anagram = Anagram(
                        anagram_key=sorted_key,
                        anagram_words=Services().possiblepermutations(
                            text=sorted_key),
                        inputed_words=[text_word],
                        inputed_words_count=1,
                        word_length=len(text_word),
                        user_id=Services().get_current_user_id())
                    new_anagram.put()

            readLine = openFile.readline()

        openFile.close()

        message = "Upload completed"

        template_values = {'message': message}

        template = JINJA_ENVIRONMENT.get_template("importdata.html")
        self.response.write(template.render(template_values))
Exemplo n.º 3
0
def add_new_anagram(my_user, text, anagram_id, anagram_key):
    if is_english_word(text):
        anagram = Anagram(id=anagram_id)
        anagram.words.append(text)
        anagram.sorted_word = generate_id(text)
        anagram.length = len(text)
        anagram.user_id = my_user.key.id()
        anagram.put()
        # add key of the new anagram to the users KeyProperty
        my_user.anagrams.append(anagram_key)
        my_user.put()
Exemplo n.º 4
0
def addanagram_new(my_user, text, words, anagram_id, anagram_key):
    if englishword(text):
        anagram = Anagram(id=anagram_id)
        anagram.words.append(text)
        anagram.sorted_word = generateid_for_users(text)
        anagram.length = len(text)
        anagram.words_count = len(anagram.words)
        anagram.sub_words = words
        anagram.user_id = my_user.key.id()
        anagram.put()
        my_user.anagrams.append(anagram_key)
        my_user.put()
 def test_insert_request(self):
     anagram = Anagram()
     anagram.insertRequest("abc", "bca")
     anagram.insertRequest("abc", "bca")
     anagram.insertRequest("bca", "abc")
     anagram.insertRequest("tyyy", "yyyt")
     anagram.insertRequest("yyyt", "tyyy")
     # insert other 2 other requests
     anagram.insertRequest("kuk", "kku")
     anagram.insertRequest("rrr", "rrr")
     self.assertEqual(len(anagram.requests.values()), 4,
                      "Should have 4 different requests")
    def post(self):

        self.response.headers["Content-Type"] = "text/html"

        if self.request.get("addword") == "Add Word":
            user_word = self.request.get("word").lower()

            if Services().get_current_user() == None or user_word == None or user_word == "" :
                self.redirect("/addword")
                return

            current_user_id = Services().get_current_user_id()
            sorted_key = Services().sorted_key(word =user_word)

            list_word = Anagram.query()
            list_word = list_word.filter(Anagram.anagram_key == sorted_key,Anagram.user_id == current_user_id)
            list_word = list_word.fetch()

            valid_permutation = Services().validpermutations(text=sorted_key)


            if len(valid_permutation) == 0:
                self.redirect("/addword")
                return

            if len(list_word) > 0:
                anagram = list_word[0]

                if user_word in anagram.inputed_words:
                    self.redirect("/addword")
                    return

                inputed_words = anagram.inputed_words
                inputed_words.append(user_word)
                anagram.inputed_words = inputed_words
                anagram.inputed_words_count = anagram.inputed_words_count + 1
                anagram.put()

            else:

                new_anagram = Anagram(anagram_key=sorted_key,
                                   anagram_words = Services().possiblepermutations(text=sorted_key),
                                   inputed_words = [user_word],
                                   inputed_words_count = 1,
                                   word_length = len(user_word),
                                   user_id = current_user_id)
                new_anagram.put()

        self.redirect("/")
Exemplo n.º 7
0
    def post(self):
        self.response.headers["Content-Type"] = "text/html"
        # checking whether the key is add word
        if self.request.get("newdevice") == "Add Word":
            inputed_word = self.request.get("word").lower()
            # checking whether the inputed word is null or not  and redirecting to the add word paeg
            if Services().get_current_user(
            ) == None or inputed_word == None or inputed_word == "":
                self.redirect("/newdevice")
                return
            current_user_id = Services().get_current_user_id()
            sorted_key = Services().sorted_key(word=inputed_word)
            list_word = Anagram.query()
            list_word = list_word.filter(Anagram.anagram_key == sorted_key,
                                         Anagram.user_id == current_user_id)
            list_word = list_word.fetch()
            valid_permutation = Services().validpermutations(text=sorted_key)
            # checking whether the inputed word has valid permutations or not
            if len(valid_permutation) == 0:
                self.redirect("/newdevice")
                return
# checking whether the there are any word in the list or redirecting to the add word page
            if len(list_word) > 0:
                anagram = list_word[0]
                if inputed_word in anagram.input_words:
                    self.redirect("/newdevice")
                    return

                inputed_words = anagram.input_words
                inputed_words.append(inputed_word)
                anagram.input_words = inputed_words
                anagram.input_words_count = anagram.input_words_count + 1
                anagram.put()

            else:

                new_anagram = Anagram(
                    anagram_key=sorted_key,
                    anagram_words=Services().permutations(text=sorted_key),
                    input_words=[inputed_word],
                    input_words_count=1,
                    word_length=len(inputed_word),
                    user_id=current_user_id)
                new_anagram.put()
        self.redirect("/")
def add_new_anagram(my_user, text, anagram_id, anagram_key):
    if text:
        anagram = Anagram(id=anagram_id)
        anagram.words.append(text)
        anagram.sorted_word = generate_id(text)
        anagramList = list(text)
        anagram.sub_anagram = generateSubAnagrams(anagramList)
        anagram.length = len(text)
        anagram.user_id = my_user.key.id()
        anagram.put()

        my_user.anagrams.append(anagram_key)
        if anagram.sorted_word is not None:
            my_user.anagram_count += 1
        my_user.anagram_count
        if anagram.words is not None:
            my_user.words_count += 1
        my_user.words_count
        my_user.put()
 def test_get_top_ten_requests(self):
     anagram = Anagram()
     anagram.insertRequest("abc", "bca")
     anagram.insertRequest("abc", "bca")
     anagram.insertRequest("bca", "abc")
     anagram.insertRequest("tyyy", "yyyt")
     anagram.insertRequest("yyyt", "tyyy")
     self.assertTrue(len(anagram.getTopTenRequests()), 2)
     anagram.insertRequest("a", "a")
     anagram.insertRequest("kkk", "kkk")
     anagram.insertRequest("iu", "ui")
     anagram.insertRequest("yyzz", "zzyy")
     anagram.insertRequest("rtc", "ctr")
     anagram.insertRequest("io", "oi")
     anagram.insertRequest("erpet", "peter")
     anagram.insertRequest("hi", "ih")
     self.assertTrue(len(anagram.getTopTenRequests()), 10)
     anagram.insertRequest("hi", "ih")
     anagram.insertRequest("hi", "ih")
     anagram.insertRequest("oy", "yo")
     self.assertTrue(len(anagram.getTopTenRequests()), 11)
Exemplo n.º 10
0
def print_all_anagrams_in_word_list(phrase_str, word_list):
    """Prints all anagrams of a phrase that its words found in word list.

    Args:
        phrase_str (str) - phrase
        word_list (WordList) - WordList object already created

    Returns:
         none
    """
    phrase = Anagram(phrase_str)
    next_anagram = list()
    print("anagrams found:")
    while phrase.find_next_anagram() == NextAnagram.NEXT_FOUND:
        next_anagram = phrase.get_next_anagram()
        all_anagram_words_found = True
        for word in next_anagram:
            if word_list.find_word(word) != FindWord.WORD_FOUND:
                all_anagram_words_found = False
                break
        if all_anagram_words_found:
            print(" ".join(next_anagram))
Exemplo n.º 11
0
 def test_eliminate_anagram_subsets(self):
     self.assertEqual(
         [],
         Anagram('good').match('dog goody'.split())
     )
Exemplo n.º 12
0
from flask import Flask, render_template, json, request
from anagram import Anagram

app = Flask(__name__)

anagram = Anagram()


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/check_anagram')
def check_anagram():
    firstWord = request.args.get("firstWord", "")
    secondWord = request.args.get("secondWord", "")

    if Anagram.checkIfAnagram(firstWord, secondWord):
        return json.dumps({
            "result": True,
            "message": "Yes! They are anagrams"
        })
    else:
        return json.dumps({
            "result": False,
            "message": "No! They are NOT anagrams"
        })


@app.route('/refresh_topten')
Exemplo n.º 13
0
def test_anagram():
    a = Anagram('eng-text.txt')
    print 'The anagrams found in text:'
    a.findAnagrams().printNodesAndStorage()
Exemplo n.º 14
0
 def test_no_matches(self):
     self.assertEqual(
         [],
         Anagram('diaper').match('hello world zombies pants'.split()) #match takes a list
     )
Exemplo n.º 15
0
 def test_is_anagram(self):
     anagram = Anagram()
     self.assertTrue(anagram.is_Anagram("abc", "bca"))
Exemplo n.º 16
0
 def test_detect_simple_anagram(self):
     self.assertEqual(
         ['tan'],
         Anagram('ant').match('tan stand at'.split())
     )
Exemplo n.º 17
0
 def test_anagram(self):
     anagram = Anagram()
     self.assertTrue(anagram.is_anagram("god", "dog"))
Exemplo n.º 18
0
def main():
    test = TestAnagram()
    anagram = Anagram()
    test.test_anagram(anagram.anagram)
    test.test_anagram(anagram.anagram2)
Exemplo n.º 19
0
 def test_does_not_confuse_different_duplicates(self):
     self.assertEqual(
         [],
         Anagram('galea').match(['eagle'])
     )
Exemplo n.º 20
0
 def test_detect_multiple_anagrams(self):
     self.assertEqual(
         ['stream', 'maters'],
         Anagram('master').match('stream pigeon maters'.split())
     )
Exemplo n.º 21
0
 def test_detect_anagram(self):
     self.assertEqual(
         ['inlets'],
         Anagram('listen').match('enlists google inlets banana'.split())
     )
Exemplo n.º 22
0
 def test_multiple_anagrams(self):
     self.assertEqual(
         'gallery regally largely'.split(),
         Anagram('allergy').match('gallery ballerina regally clergy largely leading'.split())
     )
Exemplo n.º 23
0
    def post(self):
        self.response.headers['Content-Type'] = 'text/html'
        action = self.request.get('button')

        user = users.get_current_user()
        myuser_key = ndb.Key('MyUser', user.user_id())
        myuser = myuser_key.get()
        file = self.request.get('myFile')

        if action == 'UPLOAD':

            f = open(file)
            line = f.readline()
            # count = 1
            while line:
                original_word = (line.strip('\n\r')).lower()
                lexi_word = lexi(original_word)

                anagram_key = ndb.Key('Anagram',user.email()+lexi_word)
                anagram = anagram_key.get()
                if anagram == None:
                    new_anagram = Anagram(id=user.email()+lexi_word,AnagramKey=lexi_word)
                    new_anagram.User=user.email()
                    new_anagram.WordList.append(original_word)
                    new_anagram.WordCount = 1
                    new_anagram.LetterCount =  len(original_word)
                    new_anagram.put()

                    myuser.myAnagram = myuser.myAnagram + 1
                    myuser.myWordCount = myuser.myWordCount + 1
                    myuser.put()
                else:
                    flag = False
                    for word in anagram.WordList:
                        if word == original_word:
                            flag = True
                            break
                        else:
                            flag = False

                    if flag:
                        message = "Word already exists"
                    else:
                        # anagram.User=user.email()
                        anagram.WordList.append(original_word)
                        anagram.WordCount = anagram.WordCount + 1
                        anagram.put()
                        # message = "Word added"


                        myuser.myWordCount = myuser.myWordCount + 1
                        myuser.put()

                # count = count + 1
                line = f.readline()

            f.close()

        template_values={
                'message':"File Uploaded"
                }
        template = JINJA_ENVIRONMENT.get_template('upload.html')
        self.response.write(template.render(template_values))
Exemplo n.º 24
0
 def test_anagrams_are_case_insensitive(self):
     self.assertEqual(
         ['Carthorse'],
         Anagram('Orchestra').match('cashregister Carthorse radishes'.split())
     )
Exemplo n.º 25
0
 def test_is_anagram_with_oneparameter(self):
     anagram = Anagram()
     self.assertFalse(anagram.is_Anagram("", "bcca"))
Exemplo n.º 26
0
 def test_same_word_isnt_anagram(self):
     self.assertEqual(
         [],
         Anagram('banana').match(['banana'])
     )
Exemplo n.º 27
0
 def test_isnot_anagram01(self):
     anagram = Anagram()
     self.assertFalse(anagram.is_Anagram("abc", "bcca"))
Exemplo n.º 28
0
from anagram import Anagram
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import SocketServer
import urlparse
import urllib2
import json

response = urllib2.urlopen(
    'https://raw.githubusercontent.com/first20hours/google-10000-english/master/20k.txt'
)
wordlist = response.read()
global_anagram = Anagram(wordlist)


class WebServer(BaseHTTPRequestHandler):
    def _set_headers(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/json')
        self.end_headers()

    def do_GET(self):
        self._set_headers()
        if self.path.startswith('/?anagram='):
            components = self.path.split('=')
            if len(components) > 1:
                word = components[1]
                solution = global_anagram.solve(word)
                text = json.dumps(solution)
                self.wfile.write(text)
                del text
                del solution