Module: UrlHelpers::ClassMethods

Defined in:
lib/scaffold/lib/utils/url_helpers.rb

Instance Method Summary collapse

Instance Method Details

#make_helper_name(pattern) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/scaffold/lib/utils/url_helpers.rb', line 32

def make_helper_name(pattern)
  url_arr = make_url_arr(pattern)
  return "root_url" if url_arr.empty?

  if url_arr.include?("id") ||  url_arr.any? { |str| str.include?("_id") }
    make_id_helper_name(url_arr)
  else
    make_idless_helper_name(url_arr)
  end
end

#make_helpers(patterns) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/scaffold/lib/utils/url_helpers.rb', line 21

def make_helpers(patterns)
  patterns.each do |pattern|
    url_arr = make_url_arr(pattern)
    if url_arr.include?("id") ||  url_arr.any? { |str| str.include?("_id") }
      make_id_helpers(url_arr)
    else
      make_idless_helpers(url_arr)
    end
  end
end

#make_id_helper_name(url_arr) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/scaffold/lib/utils/url_helpers.rb', line 43

def make_id_helper_name(url_arr)
  name_arr = url_arr.dup
  name_arr[0] = url_arr.first.singularize
  filtered_arr = name_arr.reject do |el| 
    el == "id" || el.include?("_id")
  end

  if filtered_arr.last == "edit" || filtered_arr.last == "new"
    filtered_arr.unshift(filtered_arr.pop) 
  end

  filtered_arr.join("_") + "_url"
end

#make_idless_helper_name(url_arr) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/scaffold/lib/utils/url_helpers.rb', line 57

def make_idless_helper_name(url_arr)
  url_arr = url_arr.dup
   if url_arr.last == "edit" || url_arr.last == "new"
    url_arr.unshift(url_arr.pop) 
  end

  url_arr.join("_") + "_url"
end

#make_url(pattern) ⇒ Object



17
18
19
# File 'lib/scaffold/lib/utils/url_helpers.rb', line 17

def make_url(pattern)
  "/" + make_url_arr(pattern).join("/")
end

#make_url_arr(pattern) ⇒ Object



8
9
10
11
# File 'lib/scaffold/lib/utils/url_helpers.rb', line 8

def make_url_arr(pattern)
  pattern.inspect.delete('\^$?<>/+()')
      .split('\\').drop(1).reject { |el| el == "d"}
end

#make_url_arr_from_path(path) ⇒ Object



13
14
15
# File 'lib/scaffold/lib/utils/url_helpers.rb', line 13

def make_url_arr_from_path(path)
  path.split("/").drop(1)
end