Class Giver
In: app/models/giver.rb
Parent: Object

Methods

Public Instance methods

      get_filename_part returns an array of the $1 portion

of the match between filenames

      under root_path and the regular expression frx, sorted by
      frequency of occurrence

[Source]

    # File app/models/giver.rb, line 8
 8:   def get_filename_part(public_path,frx)
 9:         char_freq={} #possible_chars and their frequency of
10: #                       occurrence in picture file_names
11:         char_freq.default=0
12:         Find.find(File.join(Dir.pwd,'public',public_path)) do
13: |path|
14:                 if FileTest.directory?(path) and
15:                    (File.basename(path)[0] == ?.)
16:                         Find.prune # Don't look any further into
17:                         #this directory.
18:                 else
19:                         if path.match(frx)
20:                                 found=$1
21:                                 if found.match('\.') #so that we
22: #                                               preserve case for file names
23:                                         char_freq[found]+=1
24:                                 else
25:                                         char_freq[found.upcase]+=1
26:                                 end
27:                         end
28:                 end
29:         end
30:         char_freq.sort{|b,a| a[1]<=>b[1]}.collect{|x| x[0]}
31:   end

get_matching_sentences returns sentences in root_dir folder matching rx

[Source]

    # File app/models/giver.rb, line 55
55:   def get_matching_sentences (root_dir,rx)
56:                 files=get_filename_part(root_dir,'(.+txt)$')
57:                 sentences=[]
58: #               p files
59:                 files.each do |fs|
60: #                       p("searching file #{fs}")
61:                         f=open(fs)
62:                         f.each do |s|
63: #                               p("searching sentence #{s}")
64:                                 if s.match rx
65:                                         sentences << s.strip
66:                                 end
67:                         end
68:                 end
69:                 sentences
70:   end

get_matching_words returns an array of words in txt files under root_dir that match rx,alphabetically sorted

[Source]

    # File app/models/giver.rb, line 42
42:   def get_matching_words (root_dir, rx)
43:         rxfile=Regexp.new('([\w,/,
44: ]*\.txt)$',Regexp::IGNORECASE)
45: #                       full path of txt files
46:         @files=get_filename_part("words",rxfile)
47:         @words=[]
48:         @files.each do |f|
49:                 @words += matching_words_from_file(f,rx)
50:         end
51:         @words.uniq.sort
52:   end

returns words that start sentences or appear after a comma or semicolon in root_dir

[Source]

    # File app/models/giver.rb, line 82
82:         def get_starting_words(root_dir)
83:                 rx=/\w/
84:                 ac=get_matching_sentences(root_dir,rx)
85:                 nw=ac.collect do |se|
86:                         if se =~ /^\s*(\w+)/
87:                                 $1
88:                         end
89:                 end
90:                 nw
91:         end

get_subdirs returns array of subdirectories under

 "public" that do not
 begin with a period

[Source]

    # File app/models/giver.rb, line 74
74:   def get_subdirs(root_dir)
75:         c=Dir.entries(File.join(Dir.pwd,'public',root_dir))
76:         #don't want items containing .
77:         c.reject!{|d| d=~/\./}
78:         c
79:   end

find words in filename that match rx

[Source]

    # File app/models/giver.rb, line 33
33:   def matching_words_from_file(filename, rx)
34:         str =""
35:         str=IO.read(filename)
36:         str.strip.scan(/[\w']+/).select{|w| w.match(rx)}
37:   end

[Validate]