Module: Alfalfa
- Defined in:
- lib/alfalfa.rb
Constant Summary collapse
- PWD_ARR =
Dir.entries(Dir.pwd)
Class Method Summary collapse
- .is_gemfile? ⇒ Boolean
- .partition_file(file) ⇒ Object
- .rewrite_gemfile(sg, sng, ss) ⇒ Object
- .segment_groups(file) ⇒ Object
- .segment_non_groups(file) ⇒ Object
- .segment_source(file) ⇒ Object
- .sort_gemfile ⇒ Object
- .sort_segmented_groups(segmented_groups) ⇒ Object
- .sort_segmented_non_groups(non_groups) ⇒ Object
Class Method Details
.is_gemfile? ⇒ Boolean
5 6 7 |
# File 'lib/alfalfa.rb', line 5 def self.is_gemfile? puts Alfalfa::PWD_ARR.include?("Gemfile") end |
.partition_file(file) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/alfalfa.rb', line 19 def partition_file(file) sg = segment_groups(file) sng = segment_non_groups(file) ss = segment_source(file) rewrite_gemfile(sg,sng,ss) end |
.rewrite_gemfile(sg, sng, ss) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/alfalfa.rb', line 26 def rewrite_gemfile(sg,sng,ss) File.open("Gemfile", 'w') do |f| f.puts ss f.puts "\n" f.puts sng f.puts "\n" f.puts sg end end |
.segment_groups(file) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/alfalfa.rb', line 36 def segment_groups(file) groups = file.to_enum(:scan, /(^(group).{0,}(do)$)(\n(.+)){0,}\nend/).map{ Regexp.last_match(0) } ordered_groups = [] segmented_groups = [] for i in 0...groups.length segmented_groups[i] = groups[i].split("\n") end for i in 0...segmented_groups.length ordered_groups[i] = segmented_groups[i][1,segmented_groups[i].length-2] ordered_groups[i].sort! ordered_groups[i].unshift(segmented_groups[i][0]) ordered_groups[i].push(segmented_groups[i].last) ordered_groups[i].push("\n") end return ordered_groups end |
.segment_non_groups(file) ⇒ Object
56 57 58 59 |
# File 'lib/alfalfa.rb', line 56 def segment_non_groups(file) non_groups = file.to_enum(:scan, /^((?!(^(group|\t|\s|end|Source).{0,})(\n(.*)){0,}\n).)*$/).map{ Regexp.last_match(0) } sort_segmented_non_groups(non_groups) end |
.segment_source(file) ⇒ Object
61 62 63 |
# File 'lib/alfalfa.rb', line 61 def segment_source(file) source_group = file.match(/^Source.{0,}/i) end |
.sort_gemfile ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/alfalfa.rb', line 9 def self.sort_gemfile if Alfalfa::PWD_ARR.include?("Gemfile") file = File.read("Gemfile") File.open("Gemfile") partition_file(file) else puts "No Gemfile found!" end end |
.sort_segmented_groups(segmented_groups) ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/alfalfa.rb', line 65 def sort_segmented_groups(segmented_groups) ordered_groups = [] segmented_groups.each do |segmented_group| temp_arr = segmented_group[1,segmented_group.length-2] temp_arr.sort! sorted << segmented_group[0].split + temp_arr + segmented_group.last.split end return sorted end |
.sort_segmented_non_groups(non_groups) ⇒ Object
75 76 77 78 79 80 |
# File 'lib/alfalfa.rb', line 75 def sort_segmented_non_groups(non_groups) non_groups.sort! non_groups.uniq! non_groups.keep_if{ |el| el != "" && el != "end"} return non_groups end |