/GPL |
---|
File deleted |
/LICENCE |
---|
File deleted |
/ircbot/README.txt |
---|
File deleted |
/ircbot/bot.py |
---|
File deleted |
Property changes: |
Deleted: svn:executable |
## -1 +0,0 ## |
-* |
\ No newline at end of property |
Index: APACHE_LICENCE |
=================================================================== |
--- APACHE_LICENCE (revision 299) |
+++ APACHE_LICENCE (nonexistent) |
@@ -1,202 +0,0 @@ |
- |
- Apache License |
- Version 2.0, January 2004 |
- http://www.apache.org/licenses/ |
- |
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION |
- |
- 1. Definitions. |
- |
- "License" shall mean the terms and conditions for use, reproduction, |
- and distribution as defined by Sections 1 through 9 of this document. |
- |
- "Licensor" shall mean the copyright owner or entity authorized by |
- the copyright owner that is granting the License. |
- |
- "Legal Entity" shall mean the union of the acting entity and all |
- other entities that control, are controlled by, or are under common |
- control with that entity. For the purposes of this definition, |
- "control" means (i) the power, direct or indirect, to cause the |
- direction or management of such entity, whether by contract or |
- otherwise, or (ii) ownership of fifty percent (50%) or more of the |
- outstanding shares, or (iii) beneficial ownership of such entity. |
- |
- "You" (or "Your") shall mean an individual or Legal Entity |
- exercising permissions granted by this License. |
- |
- "Source" form shall mean the preferred form for making modifications, |
- including but not limited to software source code, documentation |
- source, and configuration files. |
- |
- "Object" form shall mean any form resulting from mechanical |
- transformation or translation of a Source form, including but |
- not limited to compiled object code, generated documentation, |
- and conversions to other media types. |
- |
- "Work" shall mean the work of authorship, whether in Source or |
- Object form, made available under the License, as indicated by a |
- copyright notice that is included in or attached to the work |
- (an example is provided in the Appendix below). |
- |
- "Derivative Works" shall mean any work, whether in Source or Object |
- form, that is based on (or derived from) the Work and for which the |
- editorial revisions, annotations, elaborations, or other modifications |
- represent, as a whole, an original work of authorship. For the purposes |
- of this License, Derivative Works shall not include works that remain |
- separable from, or merely link (or bind by name) to the interfaces of, |
- the Work and Derivative Works thereof. |
- |
- "Contribution" shall mean any work of authorship, including |
- the original version of the Work and any modifications or additions |
- to that Work or Derivative Works thereof, that is intentionally |
- submitted to Licensor for inclusion in the Work by the copyright owner |
- or by an individual or Legal Entity authorized to submit on behalf of |
- the copyright owner. For the purposes of this definition, "submitted" |
- means any form of electronic, verbal, or written communication sent |
- to the Licensor or its representatives, including but not limited to |
- communication on electronic mailing lists, source code control systems, |
- and issue tracking systems that are managed by, or on behalf of, the |
- Licensor for the purpose of discussing and improving the Work, but |
- excluding communication that is conspicuously marked or otherwise |
- designated in writing by the copyright owner as "Not a Contribution." |
- |
- "Contributor" shall mean Licensor and any individual or Legal Entity |
- on behalf of whom a Contribution has been received by Licensor and |
- subsequently incorporated within the Work. |
- |
- 2. Grant of Copyright License. Subject to the terms and conditions of |
- this License, each Contributor hereby grants to You a perpetual, |
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
- copyright license to reproduce, prepare Derivative Works of, |
- publicly display, publicly perform, sublicense, and distribute the |
- Work and such Derivative Works in Source or Object form. |
- |
- 3. Grant of Patent License. Subject to the terms and conditions of |
- this License, each Contributor hereby grants to You a perpetual, |
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable |
- (except as stated in this section) patent license to make, have made, |
- use, offer to sell, sell, import, and otherwise transfer the Work, |
- where such license applies only to those patent claims licensable |
- by such Contributor that are necessarily infringed by their |
- Contribution(s) alone or by combination of their Contribution(s) |
- with the Work to which such Contribution(s) was submitted. If You |
- institute patent litigation against any entity (including a |
- cross-claim or counterclaim in a lawsuit) alleging that the Work |
- or a Contribution incorporated within the Work constitutes direct |
- or contributory patent infringement, then any patent licenses |
- granted to You under this License for that Work shall terminate |
- as of the date such litigation is filed. |
- |
- 4. Redistribution. You may reproduce and distribute copies of the |
- Work or Derivative Works thereof in any medium, with or without |
- modifications, and in Source or Object form, provided that You |
- meet the following conditions: |
- |
- (a) You must give any other recipients of the Work or |
- Derivative Works a copy of this License; and |
- |
- (b) You must cause any modified files to carry prominent notices |
- stating that You changed the files; and |
- |
- (c) You must retain, in the Source form of any Derivative Works |
- that You distribute, all copyright, patent, trademark, and |
- attribution notices from the Source form of the Work, |
- excluding those notices that do not pertain to any part of |
- the Derivative Works; and |
- |
- (d) If the Work includes a "NOTICE" text file as part of its |
- distribution, then any Derivative Works that You distribute must |
- include a readable copy of the attribution notices contained |
- within such NOTICE file, excluding those notices that do not |
- pertain to any part of the Derivative Works, in at least one |
- of the following places: within a NOTICE text file distributed |
- as part of the Derivative Works; within the Source form or |
- documentation, if provided along with the Derivative Works; or, |
- within a display generated by the Derivative Works, if and |
- wherever such third-party notices normally appear. The contents |
- of the NOTICE file are for informational purposes only and |
- do not modify the License. You may add Your own attribution |
- notices within Derivative Works that You distribute, alongside |
- or as an addendum to the NOTICE text from the Work, provided |
- that such additional attribution notices cannot be construed |
- as modifying the License. |
- |
- You may add Your own copyright statement to Your modifications and |
- may provide additional or different license terms and conditions |
- for use, reproduction, or distribution of Your modifications, or |
- for any such Derivative Works as a whole, provided Your use, |
- reproduction, and distribution of the Work otherwise complies with |
- the conditions stated in this License. |
- |
- 5. Submission of Contributions. Unless You explicitly state otherwise, |
- any Contribution intentionally submitted for inclusion in the Work |
- by You to the Licensor shall be under the terms and conditions of |
- this License, without any additional terms or conditions. |
- Notwithstanding the above, nothing herein shall supersede or modify |
- the terms of any separate license agreement you may have executed |
- with Licensor regarding such Contributions. |
- |
- 6. Trademarks. This License does not grant permission to use the trade |
- names, trademarks, service marks, or product names of the Licensor, |
- except as required for reasonable and customary use in describing the |
- origin of the Work and reproducing the content of the NOTICE file. |
- |
- 7. Disclaimer of Warranty. Unless required by applicable law or |
- agreed to in writing, Licensor provides the Work (and each |
- Contributor provides its Contributions) on an "AS IS" BASIS, |
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
- implied, including, without limitation, any warranties or conditions |
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A |
- PARTICULAR PURPOSE. You are solely responsible for determining the |
- appropriateness of using or redistributing the Work and assume any |
- risks associated with Your exercise of permissions under this License. |
- |
- 8. Limitation of Liability. In no event and under no legal theory, |
- whether in tort (including negligence), contract, or otherwise, |
- unless required by applicable law (such as deliberate and grossly |
- negligent acts) or agreed to in writing, shall any Contributor be |
- liable to You for damages, including any direct, indirect, special, |
- incidental, or consequential damages of any character arising as a |
- result of this License or out of the use or inability to use the |
- Work (including but not limited to damages for loss of goodwill, |
- work stoppage, computer failure or malfunction, or any and all |
- other commercial damages or losses), even if such Contributor |
- has been advised of the possibility of such damages. |
- |
- 9. Accepting Warranty or Additional Liability. While redistributing |
- the Work or Derivative Works thereof, You may choose to offer, |
- and charge a fee for, acceptance of support, warranty, indemnity, |
- or other liability obligations and/or rights consistent with this |
- License. However, in accepting such obligations, You may act only |
- on Your own behalf and on Your sole responsibility, not on behalf |
- of any other Contributor, and only if You agree to indemnify, |
- defend, and hold each Contributor harmless for any liability |
- incurred by, or claims asserted against, such Contributor by reason |
- of your accepting any such warranty or additional liability. |
- |
- END OF TERMS AND CONDITIONS |
- |
- APPENDIX: How to apply the Apache License to your work. |
- |
- To apply the Apache License to your work, attach the following |
- boilerplate notice, with the fields enclosed by brackets "[]" |
- replaced with your own identifying information. (Don't include |
- the brackets!) The text should be enclosed in the appropriate |
- comment syntax for the file format. We also recommend that a |
- file or class name and description of purpose be included on the |
- same "printed page" as the copyright notice for easier |
- identification within third-party archives. |
- |
- Copyright [yyyy] [name of copyright owner] |
- |
- Licensed under the Apache License, Version 2.0 (the "License"); |
- you may not use this file except in compliance with the License. |
- You may obtain a copy of the License at |
- |
- http://www.apache.org/licenses/LICENSE-2.0 |
- |
- Unless required by applicable law or agreed to in writing, software |
- distributed under the License is distributed on an "AS IS" BASIS, |
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
- See the License for the specific language governing permissions and |
- limitations under the License. |
Index: cliapp/tsimapiakcli.py |
=================================================================== |
--- cliapp/tsimapiakcli.py (revision 299) |
+++ cliapp/tsimapiakcli.py (nonexistent) |
@@ -1,35 +0,0 @@ |
-#!/usr/bin/env python |
-# This file is part of Tsim Apiak. |
-# |
-# Tsim Apiak is free software: you can redistribute it and/or modify |
-# it under the terms of the GNU General Public Licence as published by |
-# the Free Software Foundation, either version 3 of the Licence, or |
-# (at your option) any later version. |
-# |
-# In addition to this, you must also comply with clause 4 of the |
-# Apache Licence, version 2.0, concerning attribution. Where there |
-# is a contradiction between the two licences, the GPL |
-# takes preference. |
-# |
-# Tsim Apiak is distributed in the hope that it will be useful, |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-# GNU General Public License for more details. |
-# |
-# You should have received a copy of the GNU General Public License |
-# along with Tsim Apiak. If not, see |
- |
-from tsimapiak import translate |
-import sys |
- |
-for line in sys.stdin: |
- try: |
- line = line.decode("utf-8") |
- except: |
- line = line.decode("iso-8859-1") |
- translated = [] |
- for word in translate.translatesent(line, "en"): |
- translated.append(word["translated"]) |
- translated = " | ".join(translated) |
- print translated |
- |
/cliapp/tsimapiakcli.py |
---|
Property changes: |
Deleted: svn:executable |
## -1 +0,0 ## |
-* |
\ No newline at end of property |
Index: cliapp/README |
=================================================================== |
--- cliapp/README (revision 299) |
+++ cliapp/README (nonexistent) |
@@ -1 +0,0 @@ |
-This app is only for use on the server. |
Index: discordbot/README.txt |
=================================================================== |
--- discordbot/README.txt (revision 299) |
+++ discordbot/README.txt (nonexistent) |
@@ -1,3 +0,0 @@ |
-This is a Discord bot for TsimApiak. |
- |
-To use it you have to put the tsimapiak directory inside this dir, and run bot.py. |
Index: discordbot/bot.py |
=================================================================== |
--- discordbot/bot.py (revision 299) |
+++ discordbot/bot.py (nonexistent) |
@@ -1,60 +0,0 @@ |
-#! /usr/bin/env python |
-# This file is part of Tsim Apiak. |
-# |
-# Tsim Apiak is free software: you can redistribute it and/or modify |
-# it under the terms of the GNU General Public Licence as published by |
-# the Free Software Foundation, either version 3 of the Licence, or |
-# (at your option) any later version. |
-# |
-# In addition to this, you must also comply with clause 4 of the |
-# Apache Licence, version 2.0, concerning attribution. Where there |
-# is a contradiction between the two licences, the GPL |
-# takes preference. |
-# |
-# Tsim Apiak is distributed in the hope that it will be useful, |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-# GNU General Public License for more details. |
-# |
-# You should have received a copy of the GNU General Public License |
-# along with Tsim Apiak. If not, see |
- |
-import os |
- |
-import discord |
-import dotenv |
-from typing import Optional |
- |
-from tsimapiak import translate |
- |
-dotenv.load_dotenv(dotenv.find_dotenv()) |
- |
-intents = discord.Intents.default() |
-client = discord.Client(intents=intents) |
-tree = discord.app_commands.CommandTree(client) |
- |
-@client.event |
-async def on_ready(): |
- print(f"{client.user} Connected to discord") |
- await tree.sync() |
- |
-@tree.command( |
- name="translate", |
- description="Translate (gloss) Na'vi to English" |
-) |
-async def on_translate(interaction: discord.Interaction, argument: str, language: Optional[str]): |
- if not language: |
- language = "en" |
- translated = [] |
- for word in translate.translatesent(argument, language): |
- translated.append(word["translated"]) |
- |
- await interaction.response.send_message(argument + "\n" + " | ".join(translated)) |
- |
-def main(): |
- TOKEN = os.getenv('DISCORD_TOKEN') |
- |
- client.run(TOKEN) |
- |
-if __name__ == "__main__": |
- main() |
/discordbot/bot.py |
---|
Property changes: |
Deleted: svn:executable |
## -1 +0,0 ## |
-* |
\ No newline at end of property |
Index: dev/naviparse.py |
=================================================================== |
--- dev/naviparse.py (nonexistent) |
+++ dev/naviparse.py (revision 48) |
@@ -0,0 +1,92 @@ |
+# -*- coding: utf-8 -*- |
+import re |
+ |
+strings = [ u"oe", u"nga", u"k<0><1>am<2>e", u"t<0><1><2>ìng nari", u"s<0><1><2>i", u"t<0><1><2>ìng" ] |
+ |
+infixes0 = [ u"awn", u"eyk", u"us", u"äp" ] |
+infixes1 = [ u"ìyev", u"iyev", u"arm", u"asy", u"ilv", u"ìmv", u"imv" u"ìrm", u"irv", u"ìsy", u"aly", u"ary", u"ìly", u"ìry", u"ìlm", u"alm", u"am", u"ay", u"er", u"ìm", u"iv", u"ìy", u"ol" ] |
+infixes2 = [ u"äng", u"ats", u"eiy", u"ei", u"uy" ] |
+ |
+# Returns array with Word,Infix 0,Infix 1,Infix 2,Case,Gender,Number suffixes,Inclusive,Indefinite,Vocative (suffix),Plural,Adposition,Adject pre,Adject suff,am/ay/tu/vi/yu,adverbial,nominalise,sä,fne,lenited? |
+def parsefix(original): |
+ realword = u"" |
+ infix0 = u"" |
+ infix1 = u"" |
+ infix2 = u"" |
+ infix01 = u"" |
+ infix_1 = u"" |
+ infix_2 = u"" |
+ for eachword in strings: |
+ regex = re.sub(u" ",u"[^ ]* [^ ]*",eachword) |
+ regex = re.sub(u"^",u"[^ ]*",regex) |
+ regex = re.sub(u"$",u"[^ ]*",regex) |
+ regex = re.sub(u"<0><1>",u"[^ ]*",regex) |
+ regex = re.sub(u"<2>",u"[^ ]*",regex) |
+ if re.match(regex,original): |
+ realword = eachword |
+ break |
+ if realword == u"": |
+ return [u"[" + original + u"]",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u""] |
+ else: |
+ if re.search(u"<",realword): |
+ beginning = re.sub(u"<0><1>.*",u"",realword) |
+ middle = re.sub(u".*<0><1>(.*)<2>.*",ur"\1",realword) |
+ end = re.sub(u".*<2>",u"",realword) |
+ infix01 = re.sub(u".*?" + re.sub(u"<0><1>",u"([^ ]*)",re.sub(u"<2>",u"[^ ]*",realword)) + u".*?",ur"\1",original) |
+ infix_2 = re.sub(u".*?" + re.sub(u"<2>",u"([^ ]*)",re.sub(u"<0><1>",u"[^ ]*",realword)) + u".*?",ur"\1",original) |
+ for eachinfix in infixes0: |
+ if infix01.startswith(eachinfix): |
+ infix0 = eachinfix |
+ infix_1 = infix01[len(eachinfix):] |
+ break |
+ else: |
+ infix0 = u"" |
+ infix_1 = infix01 |
+ gotinfix1 = False |
+ for eachinfix in infixes1: |
+ if infix_1.startswith(eachinfix): |
+ infix1 = eachinfix |
+ infix_1 = infix_1[len(eachinfix):] |
+ if infix_1 != u"": |
+ if re.search(u"<0><1><2>",realword): |
+ infix_2 = infix_1 |
+ else: |
+ return [u"[" + original + u"]",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u""] |
+ gotinfix1 = True |
+ break |
+ if gotinfix1 == False: |
+ if re.search(u"<0><1><2>",realword): |
+ if infix_1 == u"": |
+ infix_2 = infix_1 |
+ infix1 = u"" |
+ elif infix_1 == u"": |
+ infix1 = u"" |
+ else: |
+ return [u"[" + original + u"]",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u""] |
+ gotinfix2 = False |
+ for eachinfix in infixes2: |
+ if infix_2.startswith(eachinfix): |
+ infix2 = infix_2 |
+ gotinfix2 = True |
+ break |
+ if gotinfix2 == False: |
+ if infix_2.startswith(end): |
+ suffixes = infix2[len(end) - 1:] + end |
+ elif infix_2 == u"": |
+ infix2 = u"" |
+ else: |
+ return [u"[" + original + u"]",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u""] |
+# print u"0" + unicode(infix0) + u" 1" + unicode(infix1) + u" 2" + unicode(infix2) |
+ return [realword,infix0,infix1,infix2,u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u""] |
+ else: |
+ return [realword,u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u""] |
+ |
+print parsefix(u"oel") |
+print parsefix(u"ngati") |
+print parsefix(u"kameie") |
+print parsefix(u"kìyevame") |
+print parsefix(u"English") |
+print parsefix(u"keykivame") |
+print parsefix(u"tìsusiti") |
+print parsefix(u"tayìng nari") |
+print parsefix(u"tìtusìng") |
Index: webapp/static/favicon.ico |
=================================================================== |
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Index: webapp/static/favicon.ico |
=================================================================== |
--- webapp/static/favicon.ico (revision 299) |
+++ webapp/static/favicon.ico (nonexistent) |
/webapp/static/favicon.ico |
---|
Property changes: |
Deleted: svn:mime-type |
## -1 +0,0 ## |
-application/octet-stream |
\ No newline at end of property |
Index: webapp/main.py |
=================================================================== |
--- webapp/main.py (revision 299) |
+++ webapp/main.py (revision 48) |
@@ -1,37 +1,20 @@ |
#!/usr/bin/python |
# -*- coding: utf-8 -*- |
-# This file is part of Tsim Apiak. |
-# |
-# Tsim Apiak is free software: you can redistribute it and/or modify |
-# it under the terms of the GNU General Public Licence as published by |
-# the Free Software Foundation, either version 3 of the Licence, or |
-# (at your option) any later version. |
-# |
-# In addition to this, you must also comply with clause 4 of the |
-# Apache Licence, version 2.0, concerning attribution. Where there |
-# is a contradiction between the two licences, the GPL |
-# takes preference. |
-# |
-# Tsim Apiak is distributed in the hope that it will be useful, |
-# but WITHOUT ANY WARRANTY; without even the implied warranty of |
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
-# GNU General Public License for more details. |
-# |
-# You should have received a copy of the GNU General Public License |
-# along with Tsim Apiak. If not, see |
- |
-from tsimapiak import parse, parsenum, translate |
-import http.client as httplib |
-import os |
import tornado.httpserver |
import tornado.ioloop |
import tornado.web |
+import tornado.autoreload |
+import os |
+import re |
+from tsimapiak.parsenum import parse |
+from tsimapiak.dbconnector import getnavilist |
+ |
class Index(tornado.web.RequestHandler): |
def get(self): |
- self.render("templates/index.html") |
+ self.redirect("/number") |
class Number(tornado.web.RequestHandler): |
def get(self): |
@@ -42,70 +25,32 @@ |
num = self.get_argument("num").strip() |
except: |
self.redirect("/number") |
- numout = parsenum.parse(num.replace(" ", "")) |
+ numout = parse(num.replace(" ","")) |
if numout == None: |
- numoutt = -1 |
- else: |
- numoutt = (numout["dec"], numout["oct"]) |
- self.render("templates/number.html", last=num, numout=numoutt) |
+ numout = -1 |
+ self.render("templates/number.html", last=num, numout=numout) |
class Restart(tornado.web.RequestHandler): |
def get(self): |
os.system("/usr/bin/restartnavi") |
-class Parse(tornado.web.RequestHandler): |
- def get(self): |
- self.render("templates/parse.html", last="", out=None) |
- def post(self): |
- try: |
- word = self.get_argument("word") |
- except: |
- self.redirect("/parse") |
- out = parse.parsesent(word) |
- self.render("templates/parse.html", last=word, out=out) |
- |
-class Translate(tornado.web.RequestHandler): |
+class TestDB(tornado.web.RequestHandler): |
def get(self): |
- self.render("templates/translate.html", last="", out=None, lang="en") |
+ lis = getnavilist() |
+ text = u"id | navi | infix | partofspeech " |
+ text += u" ".join(u" | ".join(unicode(y) for y in x) for x in lis) |
+ self.write(text) |
- def post(self): |
- try: |
- word = self.get_argument("word") |
- lang = self.get_argument("lang") |
- except: |
- self.redirect("/translate") |
- out = translate.translatesent(word, lang) |
- self.render("templates/translate.html", last=word, out=out, lang=lang) |
-class Errors(tornado.web.RequestHandler): |
- def get_error_html(self, status_code, **kwargs): |
- if status_code == 500: |
- return " |
- "%(code)d: %(message)s Either we are currently working on the server, or you uncovered a bug. Please check back later on. If you still get this error, please report this bug to us in the forum thread or on IRC." % { |
- "code": status_code, |
- "message": httplib.responses[status_code], |
- } |
- else: |
- return " |
- "%(code)d: %(message)s" % { |
- "code": status_code, |
- "message": httplib.responses[status_code], |
- } |
- |
-settings = { |
- "static_path": os.path.join(os.path.dirname(__file__), "static") |
-} |
- |
application = tornado.web.Application([ |
("/", Index), |
("/number", Number), |
("/restart", Restart), |
- ("/parse", Parse), |
- ("/translate", Translate), |
- ("/(\\.well-known/.*)", tornado.web.StaticFileHandler, dict(path=settings["static_path"])) |
-], **settings) |
+ ("/testdb", TestDB) |
+]) |
if __name__ == "__main__": |
http_server = tornado.httpserver.HTTPServer(application) |
http_server.listen(1337) |
+ tornado.autoreload.start() |
tornado.ioloop.IOLoop.instance().start() |
/webapp/templates/translate.html |
---|
File deleted |
/webapp/templates/index.html |
---|
File deleted |
/webapp/templates/parse.html |
---|
File deleted |
/webapp/templates/base.html |
---|
1,28 → 1,6 |
<html> |
<!-- |
# This file is part of Tsim Apiak. |
# |
# Tsim Apiak is free software: you can redistribute it and/or modify |
# it under the terms of the GNU General Public Licence as published by |
# the Free Software Foundation, either version 3 of the Licence, or |
# (at your option) any later version. |
# |
# In addition to this, you must also comply with clause 4 of the |
# Apache Licence, version 2.0, concerning attribution. Where there |
# is a contradiction between the two licences, the GPL |
# takes preference. |
# |
# Tsim Apiak is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with Tsim Apiak. If not, see <http://www.gnu.org/licenses/>. |
--> |
<head> |
<title>Tsim Apiak - {% block title %}Title{% end %}</title> |
<link rel="shortcut icon" type="image/x-icon" href="static/favicon.ico" /> |
<style type="text/css"> |
body { |
background: #145179; |
52,7 → 30,6 |
<body> |
<div id="center"> |
<h1>Tsim Apiak</h1> |
<h2>By Sh4rK and Muzer</h2> |
<h2>{% block title %}Title{% end %}</h2> |
{% block body %}Body{% end %} |
</div> |
/webapp/templates/number.html |
---|
3,28 → 3,6 |
{% block title %}Number translator{% end %} |
{% block body %} |
<!-- |
# This file is part of Tsim Apiak. |
# |
# Tsim Apiak is free software: you can redistribute it and/or modify |
# it under the terms of the GNU General Public Licence as published by |
# the Free Software Foundation, either version 3 of the Licence, or |
# (at your option) any later version. |
# |
# In addition to this, you must also comply with clause 4 of the |
# Apache Licence, version 2.0, concerning attribution. Where there |
# is a contradiction between the two licences, the GPL |
# takes preference. |
# |
# Tsim Apiak is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with Tsim Apiak. If not, see <http://www.gnu.org/licenses/>. |
--> |
<b>Na'vi number:</b><br /> |
<form action="/number" method="post"> |
<input id="num" name="num" type="text" value="{{last}}" style="width: 100%;" /> |
/tsimapiak/parse.py |
---|
File deleted |
/tsimapiak/translate.py |
---|
File deleted |
/tsimapiak/dbconnector.py |
---|
1,90 → 1,52 |
#!/usr/bin/python |
# -*- coding: utf-8 -*- |
# This file is part of Tsim Apiak. |
# |
# Tsim Apiak is free software: you can redistribute it and/or modify |
# it under the terms of the GNU General Public Licence as published by |
# the Free Software Foundation, either version 3 of the Licence, or |
# (at your option) any later version. |
# |
# In addition to this, you must also comply with clause 4 of the |
# Apache Licence, version 2.0, concerning attribution. Where there |
# is a contradiction between the two licences, the GPL |
# takes preference. |
# |
# Tsim Apiak is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with Tsim Apiak. If not, see <http://www.gnu.org/licenses/>. |
import tornado.database |
import re |
import mysql.connector as mysql |
def getnavilist(): |
ret = [] |
db = mysql.connect(host="127.0.0.1", db="navi", user="navi", passwd="navi") |
cur = db.cursor(dictionary=True) |
cur.execute(""" |
SELECT * |
current = u"" |
db = tornado.database.Connection("127.0.0.1", "navi", user="navi", password="navi") |
for row in db.query(""" |
SELECT *, CHAR_LENGTH(navi) AS NL |
FROM `metaWords` |
WHERE partOfSpeech <> 'num.' AND partOfSpeech <> 'prefix' AND partOfSpeech <> 'affix' |
ORDER BY CHAR_LENGTH(navi) DESC""") |
for row in cur: |
navi = row["navi"].replace("+", "").replace("-", "") |
if row["infixes"] and row["infixes"] != "NULL": # yeah seriously |
ret.append({"id": row["id"], "navi": navi, "orig_navi": navi, "infix": row["infixes"].lower(), "type": row["partOfSpeech"], "lenited": False}) |
ORDER BY NL DESC"""): |
if row["partOfSpeech"] in (u"v.", u"vin.", u"vtr."): |
current = unicode(row["ipa"]) |
current = current.replace(ur"ɛ",ur"e").replace(ur".",ur"").replace(ur"ɾ",ur"r") \ |
.replace(ur"ɪ",ur"ì").replace(ur"ˈ",ur"").replace(ur"'",ur"x") \ |
.replace(ur"ŋ",ur"ng").replace(ur"j",ur"y").replace(ur"ʔ",ur"'") \ |
.replace(ur"æ",ur"ä").replace(ur"ˌ",ur"").replace(ur"\t{ts}",ur"ts") \ |
.replace(ur"ṛ",ur"rr").replace(ur"ḷ",ur"ll").replace(ur"k̚",ur"k ") \ |
.replace(ur"p̚",ur"p ").replace(ur"t̚",ur"t ").replace(ur"'̚",ur"' ") \ |
.replace(u"\\",ur"").replace(ur"(",ur"").replace(ur")",ur"") \ |
.replace(ur"[",ur"").replace(ur"]",ur"").replace(ur" "," ") \ |
.strip() |
current = re.sub(ur" or.*","",current) |
current = re.sub(ur"z(.*)engk(.*)e",ur"z\1enk\2e",current) |
current = re.sub(ur"t(.*)ì(m|n)\ ",ur"t\1ìng ",current) |
current = current.split(ur"$cdot$") |
if len(current) == 3: |
current = current[0] + u"<0><1>" + current[1] + u"<2>" + current[2] |
elif len(current) == 2: |
current = current[0] + u"<0><1><2>" + current[1] |
else: |
current = u"<0><1><2>" + current[0] |
else: |
ret.append({"id": row["id"], "navi": navi, "orig_navi": navi, "infix": navi.lower(), "type": row["partOfSpeech"], "lenited": False}) |
cur.close() |
current = unicode(row["navi"]) |
ret.append([row["id"], row["navi"], current, row["partOfSpeech"]]) |
db.close() |
return ret |
def getaffixlists(): |
ret = ([], [], []) |
db = mysql.connect(host="127.0.0.1", db="navi", user="navi", passwd="navi") |
cur = db.cursor(dictionary=True) |
cur.execute(""" |
def getnavi(word): |
ret = [] |
db = tornado.database.Connection("127.0.0.1", "navi", user="navi", password="navi") |
for row in db.query(""" |
SELECT * |
FROM `metaInfixes` |
ORDER BY CHAR_LENGTH(navi) DESC""") |
for row in cur: |
endfix = False |
if row["navi"] and row["navi"][0] == "-": |
navi = row["navi"].replace("-", "").lower() |
ret[2].append({"id": row["id"], "navi": navi, "orig_navi": navi, "gloss": row["shorthand"].upper()}) |
endfix = True |
if row["navi"] and row["navi"][-1] in ("-", "+"): |
navi = row["navi"].replace("-", "").replace("+", "").lower() |
ret[0].append({"id": row["id"], "navi": navi, "orig_navi": navi, "gloss": row["shorthand"].upper()}) |
endfix = True |
if not endfix: |
if row["position"] is None or row["position"] == "NULL": |
# not actually an affix |
continue |
ret[1].append({"id": row["id"], "navi": row["navi"].lower(), "orig_navi": row["navi"].lower(), "gloss": row["shorthand"].upper(), "position": int(row["position"])}) |
cur.close() |
FROM `metaWords` |
WHERE navi = ?""",word): |
ret.append([row["id"],row["navi"], row["infix"], row["partOfSpeech"]]) |
db.close() |
for subret in ret: |
subret.sort(key=lambda x: len(x["navi"]), reverse=True) |
return ret |
def translate(wid, language): |
ret = None |
db = mysql.connect(host="127.0.0.1", db="navi", user="navi", passwd="navi") |
cur = db.cursor(dictionary=True) |
cur.execute(""" |
SELECT * |
FROM `localizedWords` |
WHERE id = %s AND languageCode = %s""", (wid, language)) |
for row in cur: |
ret = row["localized"] |
break |
if ret == None: |
return u"ERROR: WORD NOT LOCALISED" |
db.close() |
return ret |
/tsimapiak/parsenum.py |
---|
1,175 → 1,81 |
#!/usr/bin/python |
# -*- coding: utf-8 -*- |
# This file is part of Tsim Apiak. |
# |
# Tsim Apiak is free software: you can redistribute it and/or modify |
# it under the terms of the GNU General Public Licence as published by |
# the Free Software Foundation, either version 3 of the Licence, or |
# (at your option) any later version. |
# |
# In addition to this, you must also comply with clause 4 of the |
# Apache Licence, version 2.0, concerning attribution. Where there |
# is a contradiction between the two licences, the GPL |
# takes preference. |
# |
# Tsim Apiak is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with Tsim Apiak. If not, see <http://www.gnu.org/licenses/>. |
from __future__ import print_function |
NUM = [u"kew", |
u"'aw", |
u"mune", |
u"pxey", |
u"tsìng", |
u"mrr", |
u"pukap", |
u"kinä"] |
NUMORD = [u"kew", |
u"'aw", |
u"mu", |
u"pxey", |
u"tsì", |
u"mrr", |
u"pu", |
u"ki"] |
REM = [u"aw", |
u"mun", |
u"pey", |
u"sìng", |
u"mrr", |
u"fu", |
u"hin"] |
REMORD = [u"aw", |
u"mu", |
u"pey", |
u"sì", |
u"mrr", |
u"fu", |
u"hi"] |
BASE = [u"", |
u"me", |
u"pxe", |
u"tsì", |
u"mrr", |
u"pu", |
u"ki"] |
def parse(numin): |
if u"mm" in numin: |
return None |
if (numin == u"") or ((numin[0] == u"a") and (numin[len(numin) - 1] == u"a")): |
return None |
prefs = [] |
posts = [] |
outoct = 0 |
outdec = 0 |
ret = {"word": {"id": 0, "navi": u"", "infix": u"", "type": u""}, "pref": [prefs], "post": [posts], "inf": [u"", u"", u""], "len": False, "dec": outdec, "oct": outoct} |
if numin[0] == u"a": |
prefs.append((u"a", "a")) |
numin = numin[1:] |
if numin[len(numin) - 1] == u"a": |
posts.append((u"a", None)) |
numin = numin[:-1] |
if numin[-2:] == u"ve": |
posts.append((u"ve", None)) |
numin = numin[:-2] |
#BASE numbers |
for n in range(len(NUM)): |
if (u"ve", None) in posts: |
if numin == NUMORD[n]: |
outoct = n |
outdec = n |
ret["word"]["navi"] = str(outdec) + u"." |
ret["dec"] = outdec |
ret["oct"] = outoct |
return ret |
else: |
if numin == NUM[n]: |
outoct = n |
outdec = n |
ret["word"]["navi"] = str(outdec) |
ret["dec"] = outdec |
ret["oct"] = outoct |
return ret |
#other numbers |
notbase = False |
for n in range(len(BASE)): |
if numin.startswith(BASE[n] + u"vozazam"): |
outoct += (n + 1) * (10 ** 5) |
outdec += (n + 1) * (8 ** 5) |
if numin[len(BASE[n]) + 6:].startswith(u"mrr") or numin[len(BASE[n]) + 6:].startswith(u"me"): |
numin = numin[len(BASE[n]) + 6:] |
else: |
numin = numin[len(BASE[n]) + 7:] |
notbase = True |
for n in range(len(BASE)): |
if numin.startswith(BASE[n] + u"zazam"): |
outoct += (n + 1) * (10 ** 4) |
outdec += (n + 1) * (8 ** 4) |
if numin[len(BASE[n]) + 4:].startswith(u"mrr") or numin[len(BASE[n]) + 4:].startswith(u"me"): |
numin = numin[len(BASE[n]) + 4:] |
else: |
numin = numin[len(BASE[n]) + 5:] |
notbase = True |
for n in range(len(BASE)): |
if numin.startswith(BASE[n] + u"vozam"): |
outoct += (n + 1) * (10 ** 3) |
outdec += (n + 1) * (8 ** 3) |
if numin[len(BASE[n]) + 4:].startswith(u"mrr") or numin[len(BASE[n]) + 4:].startswith(u"me"): |
numin = numin[len(BASE[n]) + 4:] |
else: |
numin = numin[len(BASE[n]) + 5:] |
notbase = True |
for n in range(len(BASE)): |
if numin.startswith(BASE[n] + u"zam"): |
outoct += (n + 1) * (10 ** 2) |
outdec += (n + 1) * (8 ** 2) |
if numin[len(BASE[n]) + 2:].startswith(u"mrr") or numin[len(BASE[n]) + 2:].startswith(u"me"): |
numin = numin[len(BASE[n]) + 2:] |
else: |
numin = numin[len(BASE[n]) + 3:] |
notbase = True |
for n in range(len(BASE)): |
if numin.startswith(BASE[n] + u"vol"): |
outoct += (n + 1) * 10 |
outdec += (n + 1) * 8 |
numin = numin[len(BASE[n]) + 3:] |
notbase = True |
if numin.startswith(BASE[n] + u"vo"): |
outoct += (n + 1) * 10 |
outdec += (n + 1) * 8 |
numin = numin[len(BASE[n]) + 2:] |
notbase = True |
if notbase: |
for n in range(len(REM)): |
if (u"ve", None) in posts: |
if numin == REMORD[n]: |
outoct += n + 1 |
outdec += n + 1 |
numin = u"" |
else: |
if numin == REM[n]: |
outoct += n + 1 |
outdec += n + 1 |
numin = u"" |
if numin == u"": |
ret["word"]["navi"] = str(outdec) if not (u"ve", None) in posts else str(outdec) + u"." |
ret["dec"] = outdec |
ret["oct"] = outoct |
return ret |
else: |
return None |
if __name__ == "__main__": |
print(parse(u"mevolawve")) |
#!/usr/bin/python |
# -*- coding: utf-8 -*- |
import re |
num = [u"kew", |
u"'aw", |
u"mune", |
u"pxey", |
u"tsìng", |
u"mrr", |
u"pukap", |
u"kinä"] |
rem = [u"aw", |
u"mun", |
u"pey", |
u"sìng", |
u"mrr", |
u"fu", |
u"hin"] |
base = [u"", |
u"me", |
u"pxe", |
u"tsì", |
u"mrr", |
u"pu", |
u"ki"] |
numre = \ |
u"^(?:(" + "|".join(base) + u")zazam??)?" + \ |
u"(?:(" + "|".join(base) + u")vozam??)?" + \ |
u"(?:(" + "|".join(base) + u")zam??)?" + \ |
u"(?:(" + "|".join(base) + u")vo(?:l(?=a|))?)?" + \ |
u"((?:" + "|".join(rem) + u")|" + \ |
u"(?:" + "|".join(num) + u"))?$" |
numre = re.compile(numre) |
def parse(numin): |
if type(numin) != unicode: |
return None |
if numin == u"": |
return None |
numin = numin.replace(u"í",u"ì").replace(u"á",u"ä") |
try: |
mat = numre.match(numin).groups() |
except: |
return None |
numout = 0 |
numoct = 0 |
try: |
numout += rem.index(mat[4]) + 1 |
numoct += rem.index(mat[4]) + 1 |
except: |
try: |
numout += num.index(mat[4]) |
numoct += num.index(mat[4]) |
except: pass |
try: |
numout += (base.index(mat[3]) + 1) * 8 |
numoct += (base.index(mat[3]) + 1) * 10 |
except: pass |
try: |
numout += (base.index(mat[2]) + 1) * 8**2 |
numoct += (base.index(mat[2]) + 1) * 10**2 |
except: pass |
try: |
numout += (base.index(mat[1]) + 1) * 8**3 |
numoct += (base.index(mat[1]) + 1) * 10**3 |
except: pass |
try: |
numout += (base.index(mat[0]) + 1) * 8**4 |
numoct += (base.index(mat[0]) + 1) * 10**4 |
except: pass |
return numout, numoct |
if __name__ == "__main__": |
print parse(u"mrrvolaw") |
/tsimapiak/__init__.py |
---|
File deleted |