tailwindcss-rb 0.1.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 +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +13 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +110 -0
- data/LICENSE.txt +21 -0
- data/README.md +244 -0
- data/Rakefile +15 -0
- data/lib/tailwindcss/arbitrary_value.rb +15 -0
- data/lib/tailwindcss/asset_helper.rb +15 -0
- data/lib/tailwindcss/compiler/channel.rb +18 -0
- data/lib/tailwindcss/compiler/connection.rb +6 -0
- data/lib/tailwindcss/compiler/file_classes_extractor.rb +24 -0
- data/lib/tailwindcss/compiler/file_parser.rb +55 -0
- data/lib/tailwindcss/compiler/hash_args_extractor.rb +93 -0
- data/lib/tailwindcss/compiler/output.rb +48 -0
- data/lib/tailwindcss/compiler/runner.rb +64 -0
- data/lib/tailwindcss/constants.rb +322 -0
- data/lib/tailwindcss/helpers.rb +26 -0
- data/lib/tailwindcss/installer.rb +17 -0
- data/lib/tailwindcss/installers/config_file_generator.rb +37 -0
- data/lib/tailwindcss/style.rb +29 -0
- data/lib/tailwindcss/style_attributes_to_list_converter.rb +44 -0
- data/lib/tailwindcss/version.rb +3 -0
- data/lib/tailwindcss.rb +78 -0
- data/lib/tasks/tailwindcss.rake +28 -0
- data/sig/tailwindcss.rbs +4 -0
- metadata +130 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
require "dry/initializer"
|
2
|
+
require "pry"
|
3
|
+
require "active_support/core_ext/object/blank"
|
4
|
+
require "active_support/core_ext/module/delegation"
|
5
|
+
require "active_support/core_ext/string/inflections"
|
6
|
+
require "active_support/core_ext/enumerable"
|
7
|
+
|
8
|
+
module Tailwindcss
|
9
|
+
class StyleAttributesToListConverter
|
10
|
+
extend Dry::Initializer
|
11
|
+
|
12
|
+
def call(**style)
|
13
|
+
add_prefix(build_style_prop_classes(style.to_h))
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def add_prefix(strings)
|
19
|
+
strings.map do |style_prop_class|
|
20
|
+
[Tailwindcss.config.prefix, style_prop_class].compact_blank.join("-")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def build_style_prop_classes(style)
|
25
|
+
style.flat_map { |(style_prop, value)| classes_for_style_prop(style_prop, value) }
|
26
|
+
.compact_blank
|
27
|
+
.sort
|
28
|
+
end
|
29
|
+
|
30
|
+
def classes_for_style_prop(style_prop, value)
|
31
|
+
token = get_token(style_prop)
|
32
|
+
return build_style_prop_classes(value).map { "#{token}:#{_1}" } if style_prop.start_with?("_")
|
33
|
+
return token if value.to_s == "true"
|
34
|
+
|
35
|
+
[token, value.to_s.dasherize].compact_blank.join("-")
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_token(name_or_alias)
|
39
|
+
return name_or_alias[1..] if name_or_alias.start_with?("_")
|
40
|
+
|
41
|
+
Tailwindcss.theme.to_h.find { _1 == name_or_alias || _2[:alias] == name_or_alias }.last[:token]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/tailwindcss.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require "dry/configurable"
|
2
|
+
require "deep_merge/rails_compat"
|
3
|
+
|
4
|
+
require "tailwindcss/version"
|
5
|
+
require "tailwindcss/constants"
|
6
|
+
require "tailwindcss/compiler/runner"
|
7
|
+
|
8
|
+
module Tailwindcss
|
9
|
+
extend Dry::Configurable
|
10
|
+
include Constants
|
11
|
+
extend self
|
12
|
+
|
13
|
+
setting :package_json_path, default: proc { "./package.json" }
|
14
|
+
setting :config_file_path, default: proc { "./tailwind.config.js" }
|
15
|
+
setting :compiler do
|
16
|
+
setting :output_path, default: proc { "./public/assets/styles.css" }
|
17
|
+
setting :compile_classes_dir, default: proc { "./tmp/tailwindcss" }
|
18
|
+
end
|
19
|
+
setting :content, default: proc { [] }
|
20
|
+
setting :prefix, default: ""
|
21
|
+
|
22
|
+
setting :tailwind_css_file_path, default: proc { Tailwindcss.config.compiler.output_path.call }
|
23
|
+
setting :tailwind_config_overrides, default: proc { {} }
|
24
|
+
setting :watch_content, default: false
|
25
|
+
|
26
|
+
setting :breakpoints, default: BREAKPOINTS
|
27
|
+
setting :pseudo_selectors, default: PSEUDO_SELECTORS
|
28
|
+
setting :pseudo_elements, default: PSEUDO_ELEMENTS
|
29
|
+
|
30
|
+
setting :theme do
|
31
|
+
THEME.each do |directive, config|
|
32
|
+
setting directive, default: proc { config }
|
33
|
+
end
|
34
|
+
setting :color_scheme, default: proc { COLOR_SCHEME }
|
35
|
+
end
|
36
|
+
|
37
|
+
setting :logger, default: proc { Logger.new(STDOUT) }
|
38
|
+
|
39
|
+
module ExtendTheme
|
40
|
+
def extend_theme(**overrides)
|
41
|
+
self.theme = theme.deeper_merge(overrides)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
config.extend ExtendTheme
|
46
|
+
|
47
|
+
def theme
|
48
|
+
@theme ||= OpenStruct.new(self.config.theme.to_h.transform_values { _1.respond_to?(:call) ? _1.() : _1 })
|
49
|
+
end
|
50
|
+
|
51
|
+
def configure(&blk)
|
52
|
+
super(&blk)
|
53
|
+
init!
|
54
|
+
end
|
55
|
+
|
56
|
+
def init!
|
57
|
+
require "tailwindcss/style"
|
58
|
+
Compiler::Runner.new.call
|
59
|
+
end
|
60
|
+
|
61
|
+
def compile_css!
|
62
|
+
Tailwindcss.config.logger.call.info "Recompiling Tailwindcss..."
|
63
|
+
system "npx tailwindcss -o #{output_path} -m"
|
64
|
+
Channel.broadcast_css_changed if defined?(ActionCable)
|
65
|
+
end
|
66
|
+
|
67
|
+
def output_path
|
68
|
+
@output_path ||= Tailwindcss.config.compiler.output_path.call
|
69
|
+
end
|
70
|
+
|
71
|
+
def tailwind_css_file_path
|
72
|
+
@tailwind_css_file_path ||= Tailwindcss.config.tailwind_css_file_path.call
|
73
|
+
end
|
74
|
+
|
75
|
+
def logger
|
76
|
+
@logger ||= config.logger.call
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
namespace :tailwindcss do
|
3
|
+
desc "Generate TailwindCSS configuration file"
|
4
|
+
task :install do
|
5
|
+
require "tailwindcss/installer"
|
6
|
+
Tailwindcss::Installer.new.call
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "Generate config file"
|
10
|
+
task :generate_config_file do
|
11
|
+
require "tailwindcss/installers/config_file_generator"
|
12
|
+
Tailwindcss::Installers::ConfigFileGenerator.new.call
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "Compile TailwindCSS"
|
16
|
+
task :compile do
|
17
|
+
require "tailwindcss/compiler/runner"
|
18
|
+
Tailwindcss::Compiler::Runner.new.call
|
19
|
+
end
|
20
|
+
|
21
|
+
namespace :compile do
|
22
|
+
desc "Compile TailwindCSS and watch for file changes"
|
23
|
+
task :watch do
|
24
|
+
require "tailwindcss/compiler/runner"
|
25
|
+
Tailwindcss::Compiler::Runner.new(watch: true).call
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/sig/tailwindcss.rbs
ADDED
metadata
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tailwindcss-rb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- guilherme-andrade
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-11-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: listen
|
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: dry-configurable
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: deep_merge
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '7.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '7.0'
|
69
|
+
description: A Ruby wrapper for Tailwind CSS
|
70
|
+
email:
|
71
|
+
- inbox@guilherme-andrade.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".rspec"
|
77
|
+
- ".rubocop.yml"
|
78
|
+
- CHANGELOG.md
|
79
|
+
- CODE_OF_CONDUCT.md
|
80
|
+
- Gemfile
|
81
|
+
- Gemfile.lock
|
82
|
+
- LICENSE.txt
|
83
|
+
- README.md
|
84
|
+
- Rakefile
|
85
|
+
- lib/tailwindcss.rb
|
86
|
+
- lib/tailwindcss/arbitrary_value.rb
|
87
|
+
- lib/tailwindcss/asset_helper.rb
|
88
|
+
- lib/tailwindcss/compiler/channel.rb
|
89
|
+
- lib/tailwindcss/compiler/connection.rb
|
90
|
+
- lib/tailwindcss/compiler/file_classes_extractor.rb
|
91
|
+
- lib/tailwindcss/compiler/file_parser.rb
|
92
|
+
- lib/tailwindcss/compiler/hash_args_extractor.rb
|
93
|
+
- lib/tailwindcss/compiler/output.rb
|
94
|
+
- lib/tailwindcss/compiler/runner.rb
|
95
|
+
- lib/tailwindcss/constants.rb
|
96
|
+
- lib/tailwindcss/helpers.rb
|
97
|
+
- lib/tailwindcss/installer.rb
|
98
|
+
- lib/tailwindcss/installers/config_file_generator.rb
|
99
|
+
- lib/tailwindcss/style.rb
|
100
|
+
- lib/tailwindcss/style_attributes_to_list_converter.rb
|
101
|
+
- lib/tailwindcss/version.rb
|
102
|
+
- lib/tasks/tailwindcss.rake
|
103
|
+
- sig/tailwindcss.rbs
|
104
|
+
homepage: https://guilherme-andrade.com/tailwindcss
|
105
|
+
licenses:
|
106
|
+
- MIT
|
107
|
+
metadata:
|
108
|
+
homepage_uri: https://guilherme-andrade.com/tailwindcss
|
109
|
+
source_code_uri: https://github.com/guilherme-andrade/tailwindcss
|
110
|
+
changelog_uri: https://github.com/guilherme-andrade/tailwindcss/blob/main/CHANGELOG.md
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 2.6.0
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubygems_version: 3.3.7
|
127
|
+
signing_key:
|
128
|
+
specification_version: 4
|
129
|
+
summary: A Ruby wrapper for Tailwind CSS
|
130
|
+
test_files: []
|