Module: Bemonrails::BemNames

Included in:
Bem, BemRenderHelper
Defined in:
lib/bem-on-rails/build/bem_names.rb

Instance Method Summary collapse

Instance Method Details

#build_b(b = ) ⇒ Object

Build block name



81
82
83
# File 'lib/bem-on-rails/build/bem_names.rb', line 81

def build_b(b=options[:block])
    BEM[:blocks][:prefix] + b
end

#build_def(ess) ⇒ Object



65
66
67
68
69
70
71
72
73
74
# File 'lib/bem-on-rails/build/bem_names.rb', line 65

def build_def(ess)
    case ess
    when :block
        build_b
    when :element
        build_e
    when :mod
        build_m(options[:block], options[:element], options[:mod], options[:value])
    end
end

#build_e(b = , e = ) ⇒ Object

Build element name



91
92
93
94
95
96
97
# File 'lib/bem-on-rails/build/bem_names.rb', line 91

def build_e(b=options[:block], e=options[:element])
    if b
        b + BEM[:elements][:prefix] + e
    else
        BEM[:elements][:prefix] + e
    end
end

#build_m(b = , e = , m = , v = ) ⇒ Object



108
109
110
111
112
113
114
# File 'lib/bem-on-rails/build/bem_names.rb', line 108

def build_m(b=options[:block], e=options[:element], m=options[:mod], v=options[:value])
    name = build_b(b)
    name = build_e(b, e) if e
    name = name + BEM[:mods][:prefix] + m
    name = name + BEM[:mods][:postfix] + v if v
    name
end

#generate_klass(builder = options) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/bem-on-rails/build/bem_names.rb', line 30

def generate_klass(builder=options)
    names = {}

    # Generate names for block, his mods and they values
    if builder[:block]
        names[:klass] = build_b(builder[:block])

        # If block have mods
        names[:klass] = build_m(builder[:block], nil, builder[:mod], builder[:value]) if builder[:mod]
    end

    # Generate names for elements, they mods and they values
    if builder[:element]
        names[:klass] = build_e(builder[:block], builder[:element])

        # If element have mods
        names[:klass] = build_m(builder[:block], builder[:element], builder[:mod], builder[:value]) if builder[:mod]
    end

    names
end

#path_e(b = , e = ) ⇒ Object

Build block path



86
87
88
# File 'lib/bem-on-rails/build/bem_names.rb', line 86

def path_e(b=options[:block], e=options[:element])
    File.join build_b(b), BEM[:elements][:dir], BEM[:elements][:prefix] + e
end

#path_l(path, level = ) ⇒ Object



76
77
78
# File 'lib/bem-on-rails/build/bem_names.rb', line 76

def path_l(path, level=options[:level])
    File.join Rails.root.join(BEM[:root], level, path)
end

#path_m(essence, m = ) ⇒ Object



99
100
101
102
103
104
105
106
# File 'lib/bem-on-rails/build/bem_names.rb', line 99

def path_m(essence, m=options[:mod])
    case essence
    when :element
        File.join path_e, build_e, BEM[:mods][:dir], BEM[:mods][:prefix] + m
    else
        File.join build_b, BEM[:mods][:dir], BEM[:mods][:prefix] + m
    end
end

#path_resolve(essence, builder = options, include_level = true) ⇒ Object

Resolve directories



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/bem-on-rails/build/bem_names.rb', line 5

def path_resolve(essence, builder=options, include_level=true)
    current_level = builder[:level] ? builder[:level] : BEM[:level]
    path = include_level ? [current_level] : []

    case essence
    when :mod
        # This is for mods with value
        if builder[:block] && builder[:element]
            path.push path_m(:element)
        elsif builder[:block]
            path.push path_m(:block)
        else
            raise print_message("Mods must be for block or element.", 'red')
        end
    when :element
        path.push path_e(builder[:block], builder[:element])
    when :block
        path.push build_b(builder[:block])
    else
        raise print_message("Unknown params. Try 'thor help bem:create'", 'red')
    end

    File.join path.compact
end

#resolve_essenceObject



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/bem-on-rails/build/bem_names.rb', line 52

def resolve_essence
    essence = :block

    if options[:element]
        essence = :element
        if options[:mod]
            essence = :mod
        end
    end

    essence
end

#template_exists?(file) ⇒ Boolean

Returns:

  • (Boolean)


116
117
118
119
120
# File 'lib/bem-on-rails/build/bem_names.rb', line 116

def template_exists?(file)
    BEM[:techs].each do |tech, ext|
        return true if File.exists? file + ext
    end
end