Module: LegalToMarkdown::Mixins

Defined in:
lib/legal_markdown/legal_to_markdown/mixins.rb

Instance Method Summary collapse

Instance Method Details

#backup_opt_clausesObject



49
50
51
52
53
54
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 49

def backup_opt_clauses
  @clauses_to_delete.each { |m| @headers.delete(m) }
  @clauses_to_mixin.each { |m| @headers.delete(m) }
  @clauses_deleted = @clauses_to_delete.dup
  @clauses_added = @clauses_to_mixin.dup
end

#clauses_churn_addObject



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 56

def clauses_churn_add
  @clauses_added.each do | mixin |
    pattern = /(\[\{\{#{mixin}\}\}\s*?)(.*?\n*?)(\])/m
    sub_pattern = /\[\{\{(\S+?)\}\}\s*?/
    @content[pattern]
    get_it_all = $& || ""
    sub_clause = $2 || ""
    next if sub_clause[sub_pattern] && ( @clauses_to_mixin.include?($1) || @clauses_to_delete.include?($1) )
    @content = @content.gsub( get_it_all, sub_clause.lstrip )
    @clauses_added.delete( mixin ) unless @content[pattern]
  end
end

#clauses_churn_deleteObject



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 69

def clauses_churn_delete
  @clauses_deleted.each do | mixin |
    pattern = /(\[\{\{#{mixin}\}\}\s*?)(.*?\n*?)(\])/m
    sub_pattern = /\[\{\{(\S+?)\}\}\s*?/
    @content[pattern]
    get_it_all = $& || ""
    sub_clause = $2 || ""
    next if sub_clause[sub_pattern] && ( @clauses_to_mixin.include?($1) || @clauses_to_delete.include?($1) )
    @content = @content.gsub( get_it_all, "" )
    @clauses_deleted.delete( mixin ) unless @content[pattern]
  end
end

#clauses_mixinsObject



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 12

def clauses_mixins
  @clauses_to_delete = []
  @clauses_to_mixin = []
  set_up_opt_clauses
  backup_opt_clauses

  until @clauses_added.size == 0 && @clauses_deleted.size == 0
    clauses_churn_add
    clauses_churn_delete
  end
end

#clean_up_mixinsObject



35
36
37
38
39
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 35

def clean_up_mixins
  @content.gsub!(/(\n\n+)/, "\n\n")
  @content.squeeze!(" ")
  @headers = nil if @headers.empty?
end

#run_mixinsObject



6
7
8
9
10
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 6

def run_mixins
  clauses_mixins
  text_mixins
  clean_up_mixins
end

#set_up_opt_clausesObject



41
42
43
44
45
46
47
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 41

def set_up_opt_clauses
  @headers.each do | mixin, replacer |
    replacer = replacer.to_s.downcase
    @clauses_to_delete << mixin if replacer == "false"
    @clauses_to_mixin << mixin if replacer == "true"
  end
end

#text_mixinsObject



24
25
26
27
28
29
30
31
32
33
# File 'lib/legal_markdown/legal_to_markdown/mixins.rb', line 24

def text_mixins
  @headers.each do | mixin, replacer |
    unless mixin =~ /level-\d/ or mixin =~ /no-reset/ or mixin =~ /no-indent/ or mixin =~ /level-style/
      replacer = replacer.to_s
      mixin_pattern = /(\{\{#{mixin}\}\})/
      @content = @content.gsub( $1, replacer ) if @content =~ mixin_pattern
      @headers.delete( mixin )
    end
  end
end