Module: Cosensee::Node

Defined in:
lib/cosensee/node/code.rb,
lib/cosensee/node/link.rb,
lib/cosensee/node/quote.rb,
lib/cosensee/node/indent.rb,
lib/cosensee/node/hash_tag.rb,
lib/cosensee/node/codeblock.rb,
lib/cosensee/node/command_line.rb,
lib/cosensee/node/icon_bracket.rb,
lib/cosensee/node/text_bracket.rb,
lib/cosensee/node/blank_bracket.rb,
lib/cosensee/node/empty_bracket.rb,
lib/cosensee/node/image_bracket.rb,
lib/cosensee/node/double_bracket.rb,
lib/cosensee/node/formula_bracket.rb,
lib/cosensee/node/youtube_bracket.rb,
lib/cosensee/node/decorate_bracket.rb,
lib/cosensee/node/gyazo_image_bracket.rb,
lib/cosensee/node/external_link_bracket.rb,
lib/cosensee/node/internal_link_bracket.rb,
lib/cosensee/node/spotify_playlist_bracket.rb

Constant Summary collapse

Code =

parse a line

Data.define(:content, :raw) do
  alias_method :to_s, :raw

  def to_obj
    "`#{content}`"
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
Data.define(:content, :raw) do
  alias_method :to_s, :raw

  def to_obj
    content
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
Quote =

for quote

Data.define(:content, :raw, :mark) do
  def replace_content(new_content)
    Quote.new(content: new_content, raw:, mark:)
  end

  def to_s
    content.map(&:to_s).join
  end

  def to_obj
    content
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
Indent =

for normal Text

Data.define(:content, :raw) do
  def initialize(content: '', raw: '')
    @level = content.size
    super
  end

  attr_reader :level

  alias_method :to_s, :raw

  def to_obj
    content
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
HashTag =

parse a hash tag

Data.define(:content, :raw) do
  alias_method :to_s, :raw
  alias_method :anchor, :content

  def to_obj
    "##{content}"
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
Codeblock =

for codeblock

Data.define(:content, :name, :raw) do
  alias_method :to_s, :raw

  # @param [String] text
  # @param [String] raw_line
  # @return [Codeblock]
  def append_text(text:, raw_line:)
    new_content = if content && !content.empty?
                    "#{content}\n#{text}"
                  else
                    text
                  end
    Codeblock.new(content: new_content, name:, raw: "#{raw}\n#{raw_line}")
  end

  def to_obj
    "code:#{content}"
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
CommandLine =

for command line

Data.define(:content, :prompt, :raw) do
  alias_method :to_s, :raw

  def to_obj
    "#{prompt} #{content}"
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
IconBracket =

for Icon

Data.define(:content, :icon_name, :raw) do
  include BracketSerializer
end
TextBracket =

for mixed content (!= single text)

Data.define(:content, :raw) do
  include BracketSerializer
end
BlankBracket =

for bracket only spaces

Data.define(:content, :blank, :raw) do
  include BracketSerializer
end
EmptyBracket =

for empty bracket

Data.define(:content, :raw) do
  include BracketSerializer
end
ImageBracket =

for Image

Data.define(:content, :link, :src, :raw) do
  include BracketSerializer
end
DoubleBracket =

for double Bracket

Data.define(:content, :raw) do
  def image?
    content.size == 1 && content[0].match?(/\.(png|jpg)$/)
  end

  alias_method :to_s, :raw

  def to_obj
    "[[#{content}]]"
  end

  def to_json(*)
    to_obj.to_json(*)
  end
end
FormulaBracket =

for Formula

Data.define(:content, :formula, :raw) do
  include BracketSerializer
end
YoutubeBracket =

for Image

Data.define(:content, :video_id, :raw) do
  include BracketSerializer
end
DecorateBracket =

for Decorate

Data.define(
  :content,
  :font_size,
  :underlined,
  :slanted,
  :deleted,
  :text,
  :raw
) do
  include BracketSerializer

  # override
  def to_s
    text
  end
end
GyazoImageBracket =

for Image

Data.define(:content, :link, :src, :image_id, :raw) do
  include BracketSerializer
end
ExternalLinkBracket =

for Formula

Data.define(:content, :link, :anchor, :raw) do
  include BracketSerializer
end
InternalLinkBracket =

for Icon

Data.define(:content, :link, :anchor, :raw) do
  include BracketSerializer
end
SpotifyPlaylistBracket =

for Spotify Playlist

Data.define(:content, :src, :playlist_id, :raw) do
  include BracketSerializer
end