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

18
19-aspects/README.md Normal file
View File

@@ -0,0 +1,18 @@
Style #18
==============================
Constraints:
- The problem is decomposed using some form of abstraction (procedures, functions, objects, etc.)
- Aspects of the problem are added to the main program without any
edits to the source code of the abstractions. These side functions
latch on the main abstractions by naming them, as in "I'm an aspect
of foo (even though foo may not know it!)"
Possible names:
- Asides
- Aspect-oriented style
- Rewriting the story

49
19-aspects/tf-19.py Executable file
View File

@@ -0,0 +1,49 @@
#!/usr/bin/env python
import sys, re, operator, string, time
#
# The functions
#
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]
def frequencies(word_list):
word_freqs = {}
for w in word_list:
if w in word_freqs:
word_freqs[w] += 1
else:
word_freqs[w] = 1
return word_freqs
def sort(word_freq):
return sorted(word_freq.items(), key=operator.itemgetter(1), reverse=True)
# The side functionality
def profile(f):
def profilewrapper(*arg, **kw):
start_time = time.time()
ret_value = f(*arg, **kw)
elapsed = time.time() - start_time
print("%s(...) took %s secs" % (f.__name__, elapsed))
return ret_value
return profilewrapper
# join points
tracked_functions = [extract_words, frequencies, sort]
# weaver
for func in tracked_functions:
globals()[func.__name__]=profile(func)
word_freqs = sort(frequencies(extract_words(sys.argv[1])))
for (w, c) in word_freqs[0:25]:
print(w, ' - ', c)