Module: Alfalfa

Defined in:
lib/alfalfa.rb

Constant Summary collapse

PWD_ARR =
Dir.entries(Dir.pwd)

Class Method Summary collapse

Class Method Details

.is_gemfile?Boolean

Returns:

  • (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_gemfileObject



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