@@ -7,27 +7,44 @@ defmodule ExCSSModules.View do
7
7
Use the ExCSSModules.View on a view which defines the JSON for CSS Modules
8
8
as an external resource.
9
9
10
+ To embed the stylesheet in the file set :embed_stylesheet to true.
11
+
10
12
If adds the following functions to the View:
11
13
- stylesheet/0 - same as ExCSSModules.stylesheet/1 with the stylesheet predefined
12
14
- class/1 - same as ExCSSModules.class/2 with the stylesheet predefined
13
15
- class_name/1 - same as ExCSSModules.class_name/2 with the stylesheet predefined
14
16
- class_name/2 - same as ExCSSModules.class_name/3 with the stylesheet predefined
15
17
- class_selector/1 - same as ExCSSModules.class_selector/2 with the stylesheet predefined
16
18
"""
19
+
17
20
defmacro __using__ ( opts \\ [ ] ) do
21
+ { file , [ file: relative_to ] } =
22
+ Code . eval_quoted ( opts [ :stylesheet ] , file: __CALLER__ . file )
23
+
24
+ file = Path . expand ( file , Path . dirname ( relative_to ) )
25
+
18
26
quote do
19
- @ external_resource unquote ( opts [ :stylesheet ] ) <> ".json"
20
- @ stylesheet ExCSSModules . read_stylesheet ( unquote ( opts [ :stylesheet ] ) )
27
+ @ stylesheet unquote (
28
+ if opts [ :embed_stylesheet ] do
29
+ Macro . escape ( ExCSSModules . read_stylesheet ( file ) )
30
+ else
31
+ Macro . escape ( file )
32
+ end
33
+ )
34
+
35
+ def stylesheet_definition , do: @ stylesheet
21
36
22
37
def stylesheet , do: ExCSSModules . stylesheet ( @ stylesheet )
23
38
24
- def class ( key ) , do: ExCSSModules . class ( @ stylesheet , key )
39
+ def class ( key ) , do: stylesheet ( ) |> ExCSSModules . class ( key )
25
40
26
- def class_name ( key ) , do: ExCSSModules . class_name ( @ stylesheet , key )
41
+ def class_name ( key ) do
42
+ ExCSSModules . class_name ( stylesheet ( ) , key )
43
+ end
27
44
def class_name ( key , value ) , do:
28
- ExCSSModules . class_name ( @ stylesheet , key , value )
45
+ ExCSSModules . class_name ( stylesheet ( ) , key , value )
29
46
30
- def class_selector ( key ) , do: ExCSSModules . class_selector ( @ stylesheet , key )
47
+ def class_selector ( key ) , do: ExCSSModules . class_selector ( stylesheet ( ) , key )
31
48
end
32
49
end
33
50
end
0 commit comments