cosensee 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +13 -2
- data/README.md +25 -7
- data/Rakefile +1 -1
- data/assets/js/search.js +42 -0
- data/assets/styles/input.css +3 -0
- data/exe/cosensee +36 -0
- data/lib/cosensee/api/page_data.rb +43 -0
- data/lib/cosensee/bracket_parser.rb +21 -16
- data/lib/cosensee/bracket_serializer.rb +3 -1
- data/lib/cosensee/cli/initializer.rb +64 -0
- data/lib/cosensee/cli/option.rb +65 -0
- data/lib/cosensee/cli/parser.rb +83 -0
- data/lib/cosensee/delegatable.rb +33 -0
- data/lib/cosensee/html_builder.rb +26 -17
- data/lib/cosensee/line_parser.rb +29 -16
- data/lib/cosensee/node/blank_bracket.rb +10 -0
- data/lib/cosensee/node/code.rb +20 -0
- data/lib/cosensee/node/codeblock.rb +32 -0
- data/lib/cosensee/node/command_line.rb +20 -0
- data/lib/cosensee/node/decorate_bracket.rb +23 -0
- data/lib/cosensee/node/double_bracket.rb +22 -0
- data/lib/cosensee/node/empty_bracket.rb +10 -0
- data/lib/cosensee/node/external_link_bracket.rb +10 -0
- data/lib/cosensee/node/formula_bracket.rb +10 -0
- data/lib/cosensee/node/gyazo_image_bracket.rb +10 -0
- data/lib/cosensee/node/hash_tag.rb +21 -0
- data/lib/cosensee/node/icon_bracket.rb +10 -0
- data/lib/cosensee/node/image_bracket.rb +10 -0
- data/lib/cosensee/node/indent.rb +27 -0
- data/lib/cosensee/node/internal_link_bracket.rb +10 -0
- data/lib/cosensee/node/link.rb +20 -0
- data/lib/cosensee/node/quote.rb +26 -0
- data/lib/cosensee/node/spotify_playlist_bracket.rb +10 -0
- data/lib/cosensee/node/text_bracket.rb +12 -0
- data/lib/cosensee/node/youtube_bracket.rb +10 -0
- data/lib/cosensee/page.rb +46 -16
- data/lib/cosensee/page_store.rb +25 -2
- data/lib/cosensee/parsed_line.rb +24 -6
- data/lib/cosensee/project.rb +21 -6
- data/lib/cosensee/render_class_findable.rb +13 -0
- data/lib/cosensee/tailwind_command.rb +24 -0
- data/lib/cosensee/tailwind_renderer/blank_bracket.rb +1 -1
- data/lib/cosensee/tailwind_renderer/code.rb +1 -1
- data/lib/cosensee/tailwind_renderer/codeblock.rb +22 -0
- data/lib/cosensee/tailwind_renderer/command_line.rb +1 -1
- data/lib/cosensee/tailwind_renderer/decorate_bracket.rb +1 -1
- data/lib/cosensee/tailwind_renderer/double_bracket.rb +2 -2
- data/lib/cosensee/tailwind_renderer/empty_bracket.rb +1 -1
- data/lib/cosensee/tailwind_renderer/external_link_bracket.rb +1 -1
- data/lib/cosensee/tailwind_renderer/formula_bracket.rb +1 -1
- data/lib/cosensee/tailwind_renderer/gyazo_image_bracket.rb +15 -0
- data/lib/cosensee/tailwind_renderer/hash_tag.rb +1 -1
- data/lib/cosensee/tailwind_renderer/icon_bracket.rb +4 -3
- data/lib/cosensee/tailwind_renderer/image_bracket.rb +3 -3
- data/lib/cosensee/tailwind_renderer/inline_svg_text.rb +37 -0
- data/lib/cosensee/tailwind_renderer/internal_link_bracket.rb +1 -1
- data/lib/cosensee/tailwind_renderer/link.rb +1 -1
- data/lib/cosensee/tailwind_renderer/page.rb +3 -18
- data/lib/cosensee/tailwind_renderer/parsed_line.rb +4 -3
- data/lib/cosensee/tailwind_renderer/quote.rb +2 -2
- data/lib/cosensee/tailwind_renderer/spotify_playlist_bracket.rb +11 -0
- data/lib/cosensee/tailwind_renderer/text_bracket.rb +2 -2
- data/lib/cosensee/tailwind_renderer/youtube_bracket.rb +11 -0
- data/lib/cosensee/tailwind_renderer.rb +6 -11
- data/lib/cosensee/user.rb +7 -1
- data/lib/cosensee/version.rb +1 -1
- data/lib/cosensee/web_content_generator.rb +77 -0
- data/lib/cosensee/web_server/static_file_handler.rb +43 -0
- data/lib/cosensee/web_server.rb +38 -0
- data/lib/cosensee.rb +45 -20
- data/templates/index.html.erb +49 -27
- data/templates/page.html.erb +85 -29
- metadata +114 -23
- data/lib/cosensee/blank_bracket.rb +0 -8
- data/lib/cosensee/code.rb +0 -18
- data/lib/cosensee/codeblock.rb +0 -18
- data/lib/cosensee/command_line.rb +0 -18
- data/lib/cosensee/decorate_bracket.rb +0 -16
- data/lib/cosensee/double_bracket.rb +0 -20
- data/lib/cosensee/empty_bracket.rb +0 -8
- data/lib/cosensee/external_link_bracket.rb +0 -8
- data/lib/cosensee/formula_bracket.rb +0 -8
- data/lib/cosensee/hash_tag.rb +0 -19
- data/lib/cosensee/icon_bracket.rb +0 -8
- data/lib/cosensee/image_bracket.rb +0 -8
- data/lib/cosensee/indent.rb +0 -25
- data/lib/cosensee/internal_link_bracket.rb +0 -8
- data/lib/cosensee/line.rb +0 -47
- data/lib/cosensee/link.rb +0 -18
- data/lib/cosensee/quote.rb +0 -22
- data/lib/cosensee/tailwind_renderer/codeblock_builder.rb +0 -37
- data/lib/cosensee/text_bracket.rb +0 -10
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
module Cosensee
|
6
|
-
# for command line
|
7
|
-
CommandLine = Data.define(:content, :prompt, :raw) do
|
8
|
-
alias_method :to_s, :raw
|
9
|
-
|
10
|
-
def to_obj
|
11
|
-
"#{prompt} #{content}"
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_json(*)
|
15
|
-
to_obj.to_json(*)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cosensee
|
4
|
-
# for double Bracket
|
5
|
-
DoubleBracket = Data.define(:content, :raw) do
|
6
|
-
def image?
|
7
|
-
content.size == 1 && content[0].match?(/\.(png|jpg)$/)
|
8
|
-
end
|
9
|
-
|
10
|
-
alias_method :to_s, :raw
|
11
|
-
|
12
|
-
def to_obj
|
13
|
-
"[[#{content}]]"
|
14
|
-
end
|
15
|
-
|
16
|
-
def to_json(*)
|
17
|
-
to_obj.to_json(*)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/lib/cosensee/hash_tag.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
module Cosensee
|
6
|
-
# parse a hash tag
|
7
|
-
HashTag = Data.define(:content, :raw) do
|
8
|
-
alias_method :to_s, :raw
|
9
|
-
alias_method :anchor, :content
|
10
|
-
|
11
|
-
def to_obj
|
12
|
-
"##{content}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def to_json(*)
|
16
|
-
to_obj.to_json(*)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/cosensee/indent.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
module Cosensee
|
6
|
-
# for normal Text
|
7
|
-
Indent = Data.define(:content, :raw) do
|
8
|
-
def initialize(content: '', raw: '')
|
9
|
-
@level = content.size
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
attr_reader :level
|
14
|
-
|
15
|
-
alias_method :to_s, :raw
|
16
|
-
|
17
|
-
def to_obj
|
18
|
-
content
|
19
|
-
end
|
20
|
-
|
21
|
-
def to_json(*)
|
22
|
-
to_obj.to_json(*)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/cosensee/line.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
module Cosensee
|
6
|
-
# for Line
|
7
|
-
Line = Data.define(:content, :parsed) do
|
8
|
-
def self.from_array(lines_args)
|
9
|
-
lines_args.map { |arg| new(arg) }
|
10
|
-
end
|
11
|
-
|
12
|
-
def initialize(content:)
|
13
|
-
super(
|
14
|
-
content:,
|
15
|
-
parsed: LineParser.parse(content)
|
16
|
-
)
|
17
|
-
end
|
18
|
-
|
19
|
-
def brackets
|
20
|
-
content.scan(/\[.+?\]/)
|
21
|
-
end
|
22
|
-
|
23
|
-
def some_images?
|
24
|
-
brackets.any? { |item| item.match?(/\.(png|jpg)$/) }
|
25
|
-
end
|
26
|
-
|
27
|
-
def first_image
|
28
|
-
brackets.find { |item| item.match?(/\.(png|jpg)$/) }
|
29
|
-
end
|
30
|
-
|
31
|
-
def indent_level
|
32
|
-
content.match(/\A([\t ]*)/)[1].size
|
33
|
-
end
|
34
|
-
|
35
|
-
def indented?
|
36
|
-
content.match?(/\A[\t ]/)
|
37
|
-
end
|
38
|
-
|
39
|
-
def to_obj
|
40
|
-
content
|
41
|
-
end
|
42
|
-
|
43
|
-
def to_json(*)
|
44
|
-
to_obj.to_json(*)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
data/lib/cosensee/link.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
module Cosensee
|
6
|
-
# link node
|
7
|
-
Link = Data.define(:content, :raw) do
|
8
|
-
alias_method :to_s, :raw
|
9
|
-
|
10
|
-
def to_obj
|
11
|
-
content
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_json(*)
|
15
|
-
to_obj.to_json(*)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/cosensee/quote.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
module Cosensee
|
6
|
-
# for quote
|
7
|
-
Quote = Data.define(:content, :raw, :mark) do
|
8
|
-
alias_method :to_s, :raw
|
9
|
-
|
10
|
-
def replace_content(new_content)
|
11
|
-
Quote.new(content: new_content, raw:, mark:)
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_obj
|
15
|
-
content
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_json(*)
|
19
|
-
to_obj.to_json(*)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cosensee
|
4
|
-
class TailwindRenderer
|
5
|
-
# connect parsed lines to a code block
|
6
|
-
class CodeblockBuilder
|
7
|
-
include HtmlEncodable
|
8
|
-
|
9
|
-
def initialize(parsed_line)
|
10
|
-
@first_line = parsed_line
|
11
|
-
@base_indent_level = parsed_line.indent_level
|
12
|
-
@lines = []
|
13
|
-
end
|
14
|
-
|
15
|
-
attr_reader :first_line, :lines, :base_indent_level
|
16
|
-
|
17
|
-
def append(parsed_line)
|
18
|
-
@lines << parsed_line
|
19
|
-
end
|
20
|
-
|
21
|
-
def continued_line?(parsed_line)
|
22
|
-
parsed_line.indent_level >= base_indent_level
|
23
|
-
end
|
24
|
-
|
25
|
-
def render
|
26
|
-
indent_level = base_indent_level * 2
|
27
|
-
title = first_line.line_content.content
|
28
|
-
<<~HTML_BLOCK
|
29
|
-
<div class="relative pl-[#{indent_level}rem]">
|
30
|
-
<div class="bg-orange-300 text-gray-900 px-4 py-1 rounded-t-lg font-mono text-sm">#{title}</div>
|
31
|
-
<div class="px-4 bg-gray-300 text-gray-900 rounded-b-lg shadow-md"><pre class="overflow-x-auto"><code class="block font-mono text-sm leading-relaxed">#{escape_html(lines.map(&:raw).join("\n"))}</code></pre></div>
|
32
|
-
</div>
|
33
|
-
HTML_BLOCK
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|