Massive renaming!

This commit is contained in:
Crista Lopes
2019-08-12 14:38:16 -07:00
parent e6c1238a56
commit 61d5f74ad9
90 changed files with 0 additions and 0 deletions

29
20-plugins/README.md Normal file
View File

@@ -0,0 +1,29 @@
Style #19
==============================
Constraints:
- The problem is decomposed using some form of abstraction
(procedures, functions, objects, etc.)
- All or some of those abstractions are physically encapsulated into
their own, usually pre-compiled, packages. Main program and each of
the packages are compiled independently. These packages are loaded
dynamically by the main program, usually in the beginning (but not
necessarily).
- Main program uses functions/objects from the dynamically-loaded
packages, without knowing which exact implementations will be
used. New implementations can be used without having to adapt or
recompile the main program.
- External specification of which packages to load. This can be done
by a configuration file, path conventions, user input or other
mechanisms for external specification of code to be linked at run
time.
Possible names:
- No commitment
- Plugins
- Dependency injection

5
20-plugins/config.ini Normal file
View File

@@ -0,0 +1,5 @@
[Plugins]
;; Options: plugins/words1.pyc, plugins/words2.pyc
words = plugins/words1.pyc
;; Options: plugins/frequencies1.pyc, plugins/frequencies2.pyc
frequencies = plugins/frequencies1.pyc

View File

@@ -0,0 +1,2 @@
python -m compileall .
cp *.pyc ../plugins

View File

@@ -0,0 +1,11 @@
import operator
def top25(word_list):
word_freqs = {}
for w in word_list:
if w in word_freqs:
word_freqs[w] += 1
else:
word_freqs[w] = 1
return sorted(word_freqs.items(), key=operator.itemgetter(1), reverse=True)[:25]

View File

@@ -0,0 +1,6 @@
import operator, collections
def top25(word_list):
counts = collections.Counter(w for w in word_list)
return counts.most_common(25)

View File

@@ -0,0 +1,14 @@
import sys, re, string
def extract_words(path_to_file):
with open(path_to_file) as f:
str_data = f.read()
pattern = re.compile('[\W_]+')
word_list = pattern.sub(' ', str_data).lower().split()
with open('../stop_words.txt') as f:
stop_words = f.read().split(',')
stop_words.extend(list(string.ascii_lowercase))
return [w for w in word_list if not w in stop_words]

View File

@@ -0,0 +1,7 @@
import sys, re, string
def extract_words(path_to_file):
words = re.findall('[a-z]{2,}', open(path_to_file).read().lower())
stopwords = set(open('../stop_words.txt').read().split(','))
return [w for w in words if w not in stopwords]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

20
20-plugins/tf-20.py Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env python
import sys, configparser, importlib.machinery
def load_plugins():
config = configparser.ConfigParser()
config.read("config.ini")
words_plugin = config.get("Plugins", "words")
frequencies_plugin = config.get("Plugins", "frequencies")
global tfwords, tffreqs
# tfwords = importlib.load_compiled('tfwords', words_plugin)
# tffreqs = importlib.load_compiled('tffreqs', frequencies_plugin)
tfwords = importlib.machinery.SourcelessFileLoader('tfwords', words_plugin).load_module()
tffreqs = importlib.machinery.SourcelessFileLoader('tffreqs', frequencies_plugin).load_module()
load_plugins()
word_freqs = tffreqs.top25(tfwords.extract_words(sys.argv[1]))
for (w, c) in word_freqs:
print(w, ' - ', c)