haml--haml/lib/pretty_hamlit/dynamic_indentation.rb

34 lines
770 B
Ruby
Raw Normal View History

2015-10-24 05:44:59 +00:00
module PrettyHamlit
class DynamicIndentation
class << self
2015-10-24 06:37:07 +00:00
def indent_with(indent_level, &block)
text = capture(&block)
insert_indent(text, indent_level)
end
def inline_or_expand(indent_level, &block)
text = capture(&block)
return text unless text.include?("\n")
indent_space(indent_level) <<
insert_indent(text, indent_level) <<
indent_space(indent_level - 1)
end
private
def indent_space(indent_level)
"\n" << ' ' * [indent_level, 0].max
end
def insert_indent(text, indent_level)
text.gsub("\n", indent_space(indent_level))
end
def capture(&block)
block.call([]).compact.join.rstrip
2015-10-24 05:44:59 +00:00
end
end
end
end