playbook_ui_docs 13.29.0.pre.alpha.removeduplicatekitexampleclass3063 → 13.29.0.pre.alpha.testingcollapsibleissue3052

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: 774b28287de8936546bbb84d72acae2861e4ad94cc3e1b1d9ba6e05c69293e77
4
- data.tar.gz: 18d0c520b311bf65ee4579e5030ba081c9de2a27071d2f2f42bdbfa4fd97dcf9
3
+ metadata.gz: 3989a7998287dbfdeb6f70a5350de16e07f58a24a708d7960d90509bde13d460
4
+ data.tar.gz: 26d31983c514bea9c5c4556ea867235c422ed3c62f12d084a993f8eaff6f3a7e
5
5
  SHA512:
6
- metadata.gz: 48b3800c5ec794c25f86de8f98cc8a9eda7f3b267139ea96725449b0fc29f7bd9ddeb8098f52f936f7dd70b1e7716778d736b04d92f3479a125e07cab2f28b76
7
- data.tar.gz: f4220d2208e01ffda784a3ea012538baabcc5828d5330c1137470d5c02796dad2c00e2472f2fc3ef42fcdb32f9abfb0e13920eb7d871e86a4daf1f18b68b4dd0
6
+ metadata.gz: 3d3bddef7c00879f999a9daf00eb7f60122c7cb41ba786457c2c3221a316ce8114990b03f31d9f92554a85d48f44b07eb6434fdc95bf45dae536f69966c1cf8d
7
+ data.tar.gz: 1eef88d2153999d0601102f50ec09771a16b395f4f10a552643a410fabfd7070cb24ce1bd02a9525d37dad36371613f978dfdc1075bb31a58173a9f6338eb9dc
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Style/CaseLikeIf
4
+ module Playbook
5
+ module PbDocs
6
+ class KitExample < Playbook::KitBase
7
+ prop :kit, type: Playbook::Props::String, required: true
8
+ prop :example_title, type: Playbook::Props::String, required: true
9
+ prop :example_key, type: Playbook::Props::String, required: true
10
+ prop :show_code, type: Playbook::Props::Boolean, default: true
11
+ prop :type, type: Playbook::Props::Enum, values: %w[rails react swift], default: "rails"
12
+ prop :dark, type: Playbook::Props::Boolean, default: false
13
+
14
+ include PlaybookWebsite::Markdown::Helper
15
+
16
+ def example
17
+ if type == "rails"
18
+ render inline: source
19
+ elsif type == "react"
20
+ react_component example_key.camelize, { dark: dark }
21
+ elsif type == "swift"
22
+ ## render the markdown file
23
+ render inline: source
24
+ end
25
+ end
26
+
27
+ def description
28
+ @description ||= read_kit_file("docs", "_#{example_key}.md")
29
+ end
30
+
31
+ def highlighter
32
+ type.eql?("rails") ? "erb" : "react"
33
+ end
34
+
35
+ def source
36
+ @source ||= begin
37
+ extension = if type == "rails"
38
+ "html.erb"
39
+ else
40
+ type == "swift" ? "swift" : "jsx"
41
+ end
42
+ stringified_code = read_kit_file("docs", "_#{example_key}.#{extension}")
43
+ sanitize_code(stringified_code)
44
+ end
45
+ end
46
+
47
+ def tsx_source
48
+ read_kit_file("", "_#{example_key}.tsx")
49
+ end
50
+
51
+ private
52
+
53
+ def sanitize_code(stringified_code)
54
+ stringified_code = stringified_code.gsub('"../.."', '"playbook-ui"')
55
+ .gsub('"../../"', '"playbook-ui"')
56
+ .gsub("'../../'", "'playbook-ui'")
57
+ .gsub("'../..'", "'playbook-ui'")
58
+ .gsub(%r{from "../.*}, "from 'playbook-ui'")
59
+ .gsub(%r{from '../.*}, "from 'playbook-ui'")
60
+ .gsub("'../../../../../../playbook-website/app/javascript/scripts/custom-icons'", "'your-directory/custom-icons.js'")
61
+ stringified_code = dark ? stringified_code.gsub("{...props}", "dark") : stringified_code.gsub(/\s*{...props}\s*\n/, "\n")
62
+ if stringified_code.include?("props: { ")
63
+ stringified_code = stringified_code.gsub("props: {", "props: {dark: true,") if type == "rails" && dark
64
+ elsif type == "rails" && dark
65
+ stringified_code = stringified_code.gsub("props: {", "props: {\n dark: true,")
66
+ end
67
+ stringified_code.gsub(" {...props}", "")
68
+ end
69
+
70
+ def read_kit_file(folder, *args)
71
+ path = ::Playbook.kit_path(kit, folder, *args)
72
+ path.exist? ? path.read : ""
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ # rubocop:enable Style/CaseLikeIf