peasy-css 0.1.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e14a971444073e466989d6ef8aa320c13eafa95d062d747c6a05da64c88a5cf
4
- data.tar.gz: e0f29e6d09e48c3d450333a54c2beab5a7381dff7f79e77e77d5c17103db72f6
3
+ metadata.gz: 76bd009c6c3cd8aca3092634b40e51bf269ddd9ef316bc7875bc0115415c43e2
4
+ data.tar.gz: d0ffc05ed87dde35935b6b90286f7d1554232f627381b06ac9d8f556cb801b46
5
5
  SHA512:
6
- metadata.gz: f24927929056fd17176d3262fc98d857e0cdffb67d0152f8f4e64d56e0c83c114599ec8fc0a01e60f2586361e9b94208572b7028cdfa72c1fda1f56f9f4383d1
7
- data.tar.gz: 6243788b4a21af02a8c365cc473c24406f9b2b67244eaf8991bf2699bfcc1e08c788a52a31407eb66fb4ee43690e763c8d158e36d76e08a2b32529ad34430071
6
+ metadata.gz: f86eb9c47feab2ad2ae425aa726ce7796522e81f086fffd432f55a556896ecefffae1da33d30d931288f3edaf93980c14fd4250d5f08549b9932d582f366a458
7
+ data.tar.gz: d543136439ec83a44085406ca7adeba85b5da04d646dc46cf0ad4316b0268fb5caa7fdc961d64a0ab1731c6e2590c6875bd323c7f027c71b3e5a668071cca68d
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "json"
5
+ require "uri"
6
+
7
+ module PeasyCSS
8
+ # REST API client for peasycss.com.
9
+ # Zero dependencies — uses Ruby stdlib only.
10
+ class Client
11
+ DEFAULT_BASE_URL = "https://peasycss.com"
12
+
13
+ def initialize(base_url: DEFAULT_BASE_URL)
14
+ @base_url = base_url.chomp("/")
15
+ end
16
+
17
+ # --- Tools ---
18
+
19
+ def list_tools(page: 1, limit: 50, category: nil, search: nil)
20
+ get("/api/v1/tools/", page: page, limit: limit, category: category, search: search)
21
+ end
22
+
23
+ def get_tool(slug)
24
+ get("/api/v1/tools/#{slug}/")
25
+ end
26
+
27
+ # --- Categories ---
28
+
29
+ def list_categories(page: 1, limit: 50)
30
+ get("/api/v1/categories/", page: page, limit: limit)
31
+ end
32
+
33
+ # --- Formats ---
34
+
35
+ def list_formats(page: 1, limit: 50, category: nil, search: nil)
36
+ get("/api/v1/formats/", page: page, limit: limit, category: category, search: search)
37
+ end
38
+
39
+ def get_format(slug)
40
+ get("/api/v1/formats/#{slug}/")
41
+ end
42
+
43
+ # --- Conversions ---
44
+
45
+ def list_conversions(page: 1, limit: 50, source: nil, target: nil)
46
+ get("/api/v1/conversions/", page: page, limit: limit, source: source, target: target)
47
+ end
48
+
49
+ # --- Glossary ---
50
+
51
+ def list_glossary(page: 1, limit: 50, category: nil, search: nil)
52
+ get("/api/v1/glossary/", page: page, limit: limit, category: category, search: search)
53
+ end
54
+
55
+ def get_glossary_term(slug)
56
+ get("/api/v1/glossary/#{slug}/")
57
+ end
58
+
59
+ # --- Guides ---
60
+
61
+ def list_guides(page: 1, limit: 50, category: nil, audience_level: nil, search: nil)
62
+ get("/api/v1/guides/", page: page, limit: limit, category: category,
63
+ audience_level: audience_level, search: search)
64
+ end
65
+
66
+ def get_guide(slug)
67
+ get("/api/v1/guides/#{slug}/")
68
+ end
69
+
70
+ # --- Use Cases ---
71
+
72
+ def list_use_cases(page: 1, limit: 50, industry: nil, search: nil)
73
+ get("/api/v1/use-cases/", page: page, limit: limit, industry: industry, search: search)
74
+ end
75
+
76
+ # --- Search ---
77
+
78
+ def search(query, limit: 20)
79
+ get("/api/v1/search/", q: query, limit: limit)
80
+ end
81
+
82
+ # --- Sites ---
83
+
84
+ def list_sites
85
+ get("/api/v1/sites/")
86
+ end
87
+
88
+ # --- OpenAPI ---
89
+
90
+ def openapi_spec
91
+ get("/api/openapi.json")
92
+ end
93
+
94
+ private
95
+
96
+ def get(path, **params)
97
+ uri = URI("#{@base_url}#{path}")
98
+ params.reject! { |_, v| v.nil? }
99
+ uri.query = URI.encode_www_form(params) unless params.empty?
100
+ response = Net::HTTP.get_response(uri)
101
+ body = JSON.parse(response.body)
102
+ unless response.is_a?(Net::HTTPSuccess)
103
+ detail = body.is_a?(Hash) ? body.fetch("detail", "Unknown error") : response.body
104
+ raise PeasyCSS::Error, "HTTP #{response.code}: #{detail}"
105
+ end
106
+ body
107
+ end
108
+ end
109
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PeasyCSS
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/peasy_css.rb CHANGED
@@ -2,3 +2,4 @@
2
2
 
3
3
  require_relative "peasy_css/version"
4
4
  require_relative "peasy_css/engine"
5
+ require_relative "peasy_css/client"
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peasy-css
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PeasyTools
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-03-17 00:00:00.000000000 Z
11
12
  dependencies: []
12
13
  description: CSS code generator for Ruby — create linear/radial gradients, box/text
13
14
  shadows, border-radius, flexbox layouts, and CSS grid. Zero dependencies, outputs
@@ -19,6 +20,7 @@ extensions: []
19
20
  extra_rdoc_files: []
20
21
  files:
21
22
  - lib/peasy_css.rb
23
+ - lib/peasy_css/client.rb
22
24
  - lib/peasy_css/engine.rb
23
25
  - lib/peasy_css/version.rb
24
26
  homepage: https://peasycss.com
@@ -30,6 +32,7 @@ metadata:
30
32
  changelog_uri: https://github.com/peasytools/peasy-css-rb/blob/main/CHANGELOG.md
31
33
  documentation_uri: https://peasycss.com
32
34
  bug_tracker_uri: https://github.com/peasytools/peasy-css-rb/issues
35
+ post_install_message:
33
36
  rdoc_options: []
34
37
  require_paths:
35
38
  - lib
@@ -44,7 +47,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
44
47
  - !ruby/object:Gem::Version
45
48
  version: '0'
46
49
  requirements: []
47
- rubygems_version: 4.0.3
50
+ rubygems_version: 3.0.3.1
51
+ signing_key:
48
52
  specification_version: 4
49
53
  summary: CSS generators — gradients, shadows, flexbox, grid
50
54
  test_files: []