phlex-markdown 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b3dbcfdacaf94b656022aac982e525eeb138eac8453afad362f9a5dcbb3364a
4
- data.tar.gz: fa319bbb974e823a7fa3cc61ed56420fbec1ae4ca1d4eb28ccf23a2d2358b294
3
+ metadata.gz: 9decdb08e89ad1d8deb79e6782b7961102150af4e6e20e0dff67a4ea7ff6c6d7
4
+ data.tar.gz: 50e51626d52911b3ddb2f31404ede909bdea835b230dff35ed9d4592d6ea1cc9
5
5
  SHA512:
6
- metadata.gz: 92fc7c16467bca45387112c5971cab4501eeb26decba2aee6fc50b3e3254583df250b8657775e473f8d0d08f5c602b5b8edc62f45f3cde808d75e07badf92c31
7
- data.tar.gz: 20c8392d1bba2d0d03020835d34a505216fd5774a1deb0a42d9132b3d8a62f7f48ff34f131ee242b3d9d94d00c1b449dfd59187db1876258942b26bbcf2589e8
6
+ metadata.gz: a09c726ac8e02922efd62342038ebe87abdb107c1729881d0998665d5a6b7147f41294140c6e26b5342a6c56c1b4cca4c9aaf1f399480a0d95caf947d12036da
7
+ data.tar.gz: 1736bc45133d4336846c8accb29128e27ae9499550ebad59287624a99c2cd09d33b268c95999d670f22300f518e46788c4a8da6cd7a583066c14ccb7d6dcc84f
data/.editorconfig ADDED
@@ -0,0 +1,13 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = tab
5
+ indent_size = 2
6
+
7
+ [*.yml]
8
+ indent_style = space
9
+ indent_size = 2
10
+
11
+ [*.erb]
12
+ indent_style = space
13
+ indent_size = 2
data/.rubocop.yml ADDED
@@ -0,0 +1,15 @@
1
+ inherit_from:
2
+ - "https://www.goodcop.style/rubocop.yml"
3
+ - "https://www.goodcop.style/tabs.yml"
4
+
5
+ AllCops:
6
+ TargetRubyVersion: 2.7
7
+
8
+ Style/PercentLiteralDelimiters:
9
+ Enabled: false
10
+
11
+ Layout/CaseIndentation:
12
+ Enabled: false
13
+
14
+ Style/StringConcatenation:
15
+ Enabled: false
data/Gemfile CHANGED
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source "https://rubygems.org"
4
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
4
5
 
5
- # Specify your gem's dependencies in blank.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
9
-
10
- gem "minitest", "~> 5.0"
8
+ gem "capybara"
9
+ gem "rubocop"
10
+ gem "solargraph"
11
+ gem "sus"
12
+ gem "syntax_suggest"
data/README.md CHANGED
@@ -1,43 +1,14 @@
1
- # Blank
1
+ # `phlex-markdown`
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/blank`. To experiment with that code, run `bin/console` for an interactive prompt.
4
3
 
5
- TODO: Delete this and the text above, and describe your gem
4
+ ### Community 🙌
6
5
 
7
- ## Installation
6
+ Everyone interacting in Phlex codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/joeldrapper/phlex/blob/main/CODE_OF_CONDUCT.md).
8
7
 
9
- Add this line to your application's Gemfile:
8
+ ### Sponsorship 💖
10
9
 
11
- ```ruby
12
- gem 'blank'
13
- ```
10
+ Maintaining a library is a lot of work. If your company benefits from this work or is likely to benefit from it in the future, please consider [sponsorship](https://github.com/sponsors/joeldrapper). Phlex is actively developed and maintained by **[Joel Drapper](https://github.com/sponsors/joeldrapper)**.
14
11
 
15
- And then execute:
12
+ ### Security 🚨
16
13
 
17
- $ bundle install
18
-
19
- Or install it yourself as:
20
-
21
- $ gem install blank
22
-
23
- ## Usage
24
-
25
- TODO: Write usage instructions here
26
-
27
- ## Development
28
-
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
-
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
-
33
- ## Contributing
34
-
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/blank. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/blank/blob/master/CODE_OF_CONDUCT.md).
36
-
37
- ## License
38
-
39
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
40
-
41
- ## Code of Conduct
42
-
43
- Everyone interacting in the Blank project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/blank/blob/master/CODE_OF_CONDUCT.md).
14
+ If you’ve found a potential security issue, please email [security@phlex.fun](mailto:security@phlex.fun).
data/SECURITY.md ADDED
@@ -0,0 +1,5 @@
1
+ # Security Policy
2
+
3
+ ## Reporting a Vulnerability
4
+
5
+ If you found a possible security vulnerability in Phlex, please email security@phlex.fun.
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Phlex
4
+ class Markdown
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "markly"
4
+
5
+ module Phlex
6
+ class Markdown < Phlex::HTML
7
+ def initialize(content)
8
+ @content = content
9
+ end
10
+
11
+ def template
12
+ visit(doc)
13
+ end
14
+
15
+ private
16
+
17
+ def doc
18
+ Markly.parse(@content)
19
+ end
20
+
21
+ def visit(node)
22
+ return if node.nil?
23
+
24
+ case node.type
25
+ in :document | :softbreak
26
+ visit_children(node)
27
+ in :text
28
+ text(node.string_content)
29
+ in :header
30
+ case node.header_level
31
+ in 1 then h1 { visit_children(node) }
32
+ in 2 then h2 { visit_children(node) }
33
+ in 3 then h3 { visit_children(node) }
34
+ in 4 then h4 { visit_children(node) }
35
+ in 5 then h5 { visit_children(node) }
36
+ in 6 then h6 { visit_children(node) }
37
+ end
38
+ in :paragraph
39
+ grandparent = node.parent&.parent
40
+
41
+ if grandparent&.type == :list && grandparent&.list_tight
42
+ visit_children(node)
43
+ else
44
+ p { visit_children(node) }
45
+ end
46
+ in :link
47
+ a(href: node.url) { visit_children(node) }
48
+ in :emph
49
+ em { visit_children(node) }
50
+ in :strong
51
+ strong { visit_children(node) }
52
+ in :list
53
+ case node.list_type
54
+ in :ordered_list then ol { visit_children(node) }
55
+ in :bullet_list then ul { visit_children(node) }
56
+ end
57
+ in :list_item
58
+ li { visit_children(node) }
59
+ in :code
60
+ whitespace { code { text(node.string_content) } }
61
+ in :code_block
62
+ code_block(node.string_content, language: node.fence_info) do |**attributes|
63
+ pre(**attributes) { text(node.string_content) }
64
+ end
65
+ in :hrule
66
+ hr
67
+ in :blockquote
68
+ blockquote { visit_children(node) }
69
+ end
70
+ end
71
+
72
+ def code_block(code, language:)
73
+ yield
74
+ end
75
+
76
+ def visit_children(node)
77
+ node.each { |c| visit(c) }
78
+ end
79
+ end
80
+ end
data/sig/phlex.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Phlex
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata CHANGED
@@ -1,41 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlex-markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Drapper
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-16 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Reserved
11
+ date: 2022-11-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: markly
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: phlex
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A Markdown view for Phlex
14
42
  email:
15
43
  - joel@drapper.me
16
44
  executables: []
17
45
  extensions: []
18
46
  extra_rdoc_files: []
19
47
  files:
20
- - ".gitignore"
21
- - CHANGELOG.md
48
+ - ".editorconfig"
49
+ - ".rubocop.yml"
22
50
  - CODE_OF_CONDUCT.md
23
51
  - Gemfile
24
52
  - LICENSE.txt
25
53
  - README.md
26
- - Rakefile
27
- - bin/console
28
- - bin/setup
29
- - blank.gemspec
30
- - lib/blank.rb
31
- - lib/blank/version.rb
32
- homepage: https://phlex.fun
54
+ - SECURITY.md
55
+ - lib/phlex/markdown.rb
56
+ - lib/phlex/markdown/version.rb
57
+ - sig/phlex.rbs
58
+ homepage: https://github.com/joeldrapper/phlex-markdown
33
59
  licenses:
34
60
  - MIT
35
61
  metadata:
36
- homepage_uri: https://phlex.fun
37
- source_code_uri: https://github.com/joeldrapper/phlex
38
- changelog_uri: https://github.com/joeldrapper/phlex
62
+ homepage_uri: https://github.com/joeldrapper/phlex-markdown
63
+ source_code_uri: https://github.com/joeldrapper/phlex-markdown
64
+ changelog_uri: https://github.com/joeldrapper/phlex-markdown/releases
65
+ funding_uri: https://github.com/sponsors/joeldrapper
66
+ rubygems_mfa_required: 'true'
39
67
  post_install_message:
40
68
  rdoc_options: []
41
69
  require_paths:
@@ -44,7 +72,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - ">="
46
74
  - !ruby/object:Gem::Version
47
- version: 2.4.0
75
+ version: '2.7'
48
76
  required_rubygems_version: !ruby/object:Gem::Requirement
49
77
  requirements:
50
78
  - - ">="
@@ -54,5 +82,5 @@ requirements: []
54
82
  rubygems_version: 3.3.25
55
83
  signing_key:
56
84
  specification_version: 4
57
- summary: Reserved
85
+ summary: A Markdown view for Phlex
58
86
  test_files: []
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
data/CHANGELOG.md DELETED
@@ -1,5 +0,0 @@
1
- ## [Unreleased]
2
-
3
- ## [0.1.0] - 2022-11-16
4
-
5
- - Initial release
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
- require "rake/testtask"
5
-
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs << "test"
8
- t.libs << "lib"
9
- t.test_files = FileList["test/**/*_test.rb"]
10
- end
11
-
12
- task default: :test
data/bin/console DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require "bundler/setup"
5
- require "blank"
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
13
-
14
- require "irb"
15
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
data/blank.gemspec DELETED
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/blank/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "phlex-markdown"
7
- spec.version = "0.0.1"
8
- spec.authors = ["Joel Drapper"]
9
- spec.email = ["joel@drapper.me"]
10
-
11
- spec.summary = "Reserved"
12
- spec.description = "Reserved"
13
- spec.homepage = "https://phlex.fun"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
16
-
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = "https://github.com/joeldrapper/phlex"
19
- spec.metadata["changelog_uri"] = "https://github.com/joeldrapper/phlex"
20
-
21
- # Specify which files should be added to the gem when it is released.
22
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
25
- end
26
- spec.bindir = "exe"
27
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
29
-
30
- # Uncomment to register a new dependency of your gem
31
- # spec.add_dependency "example-gem", "~> 1.0"
32
-
33
- # For more information and examples about making a new gem, checkout our
34
- # guide at: https://bundler.io/guides/creating_gem.html
35
- end
data/lib/blank/version.rb DELETED
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Blank
4
- VERSION = "0.1.0"
5
- end
data/lib/blank.rb DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "blank/version"
4
-
5
- module Blank
6
- class Error < StandardError; end
7
- # Your code goes here...
8
- end