Skip to content

Commit 5b30413

Browse files
Merge pull request #297 from basemate/add_samp_component
Add samp tag incl. test & docs
2 parents cb5a8cd + 2ca0f51 commit 5b30413

File tree

5 files changed

+85
-0
lines changed

5 files changed

+85
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
%samp{@tag_attributes}
2+
- if options[:text].blank? && block_given?
3+
= yield
4+
- else
5+
= options[:text]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module Matestack::Ui::Core::Samp
2+
class Samp < Matestack::Ui::Core::Component::Static
3+
end
4+
end

docs/components/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ You can build your [own components](/docs/extend/README.md) as well, both static
6060
- [rt](/docs/components/rb.md)
6161
- [ruby](/docs/components/ruby.md)
6262
- [s](/docs/components/s.md)
63+
- [samp](/docs/components/samp.md)
6364
- [section](/docs/components/section.md)
6465
- [small](/docs/components/small.md)
6566
- [span](/docs/components/span.md)

docs/components/samp.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# matestack core component: Samp
2+
3+
Show [specs](/spec/usage/components/samp_spec.rb)
4+
5+
The HTML `<samp>` tag implemented in ruby.
6+
7+
## Parameters
8+
9+
This component can take 2 optional configuration params and either yield content or display what gets passed to the `text` configuration param.
10+
11+
#### # id (optional)
12+
Expects a string with all ids the `<samp>` should have.
13+
14+
#### # class (optional)
15+
Expects a string with all classes the `<samp>` should have.
16+
17+
## Example 1: Yield a given block
18+
19+
```ruby
20+
samp id: 'foo', class: 'bar' do
21+
plain 'Samp example 1' # optional content
22+
end
23+
```
24+
25+
returns
26+
27+
```html
28+
<samp id="foo" class="bar">
29+
Samp example 1
30+
</samp>
31+
```
32+
33+
## Example 2: Render `options[:text]` param
34+
35+
```ruby
36+
samp id: 'foo', class: 'bar', text: 'Samp example 2'
37+
```
38+
39+
returns
40+
41+
```html
42+
<samp id="foo" class="bar">
43+
Samp example 2
44+
</samp>

spec/usage/components/samp_spec.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
require_relative '../../support/utils'
2+
include Utils
3+
4+
describe 'Samp component', type: :feature, js: true do
5+
it 'Renders a simple and enhanced samp tag on a page' do
6+
class ExamplePage < Matestack::Ui::Page
7+
def response
8+
components {
9+
# Simple samp
10+
samp text: 'Simple samp tag'
11+
12+
# Enhanced samp
13+
samp id: 'my-id', class: 'my-class' do
14+
plain 'Enhanced samp tag'
15+
end
16+
}
17+
end
18+
end
19+
20+
visit '/example'
21+
22+
static_output = page.html
23+
24+
expected_static_output = <<~HTML
25+
<samp>Simple samp tag</samp>
26+
<samp id="my-id" class="my-class">Enhanced samp tag</samp>
27+
HTML
28+
29+
expect(stripped(static_output)).to include(stripped(expected_static_output))
30+
end
31+
end

0 commit comments

Comments
 (0)