class SocialSnippet::Snippet

Attributes

code[R]
core[R]
filepath[R]
flag_no_tag[R]

Public Class Methods

new(new_core, snippet_path) click to toggle source

Constructor

# File lib/social_snippet/snippet.rb, line 11
def initialize(new_core, snippet_path)
  @core = new_core
  @filepath = snippet_path
  read_file unless filepath.nil?
end
new_text(new_core, s) click to toggle source

Create instance by text

# File lib/social_snippet/snippet.rb, line 49
def new_text(new_core, s)
  raise "must be passed string" unless s.is_a?(String)
  snippet = self.new(new_core, nil)
  snippet.read_text s
  snippet
end

Public Instance Methods

lines() click to toggle source
# File lib/social_snippet/snippet.rb, line 30
def lines
  @lines ||= new_lines
end
no_tag?() click to toggle source
# File lib/social_snippet/snippet.rb, line 42
def no_tag?
  flag_no_tag
end
read_file() click to toggle source
# File lib/social_snippet/snippet.rb, line 17
def read_file
  begin
    @code = core.storage.read(filepath).split($/)
  rescue ::Errno::ENOENT => e
    @code = ["ERROR: #{e.to_s}"]
  end
end
read_text(s) click to toggle source
# File lib/social_snippet/snippet.rb, line 25
def read_text(s)
  raise "must be passed string" unless s.is_a?(String)
  @code = s.split($/)
end
snip_tags() click to toggle source
# File lib/social_snippet/snippet.rb, line 38
def snip_tags
  TagParser.find_snip_tags lines
end
snippet_tags() click to toggle source
# File lib/social_snippet/snippet.rb, line 34
def snippet_tags
  TagParser.find_snippet_tags lines
end

Private Instance Methods

filter(lines) click to toggle source

@param lines [Array<String>]

# File lib/social_snippet/snippet.rb, line 68
def filter(lines)
  lines = filter_range_cut(lines)
  lines = filter_line_cut(lines)
  lines = resolve_control_tags(lines)
  lines
end
filter_line_cut(lines) click to toggle source
# File lib/social_snippet/snippet.rb, line 80
def filter_line_cut(lines)
  lines.select {|s| not Tag.is_cut? s }
end
filter_range_cut(lines) click to toggle source
# File lib/social_snippet/snippet.rb, line 84
def filter_range_cut(lines)
  cut_level = 0
  lines.select do |line|
    if Tag.is_begin_cut?(line)
      cut_level += 1
      false
    elsif Tag.is_end_cut?(line)
      cut_level -= 1
      false
    else
      cut_level === 0
    end
  end
end
new_lines() click to toggle source

Return filtered and styled lines

# File lib/social_snippet/snippet.rb, line 61
def new_lines
  tmp = code.clone
  tmp = filter(tmp)
  tmp
end
resolve_control_tags(lines) click to toggle source
# File lib/social_snippet/snippet.rb, line 75
def resolve_control_tags(lines)
  @flag_no_tag = (false === TagParser.find_no_tags(lines).empty?)
  lines.reject {|s| Tag.is_control_tag? s }
end