Class: Mayu::Resources::Types::Stylesheet

Inherits:
Base
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/mayu/resources/types/stylesheet.rb

Defined Under Namespace

Classes: ClassNames

Constant Summary collapse

Classes =
T.type_alias { T::Hash[Symbol, String] }
MarshalFormat =
T.type_alias { [Classes, String, String, String] }

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#generate_assets, #name

Constructor Details

#initialize(resource) ⇒ Stylesheet



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/mayu/resources/types/stylesheet.rb', line 57

def initialize(resource)
  super
  klasses = {}

  transform_result =
    Transformers::CSS.transform(
      source: resource.read(encoding: "utf-8"),
      source_path: resource.path
    )

  transform_result.classes

  @source = T.let(transform_result.output, String)
  @content_hash = T.let(transform_result.content_hash, String)
  @classes = T.let(transform_result.classes, Classes)
  @filename = T.let(transform_result.filename, String)
  @source_map =
    T.let(transform_result.source_map, T::Hash[String, T.untyped])
  @classnames = T.let(nil, T.nilable(ClassNames))
end

Instance Attribute Details

#classesObject (readonly)

Returns the value of attribute classes.



54
55
56
# File 'lib/mayu/resources/types/stylesheet.rb', line 54

def classes
  @classes
end

Instance Method Details

#assetsObject



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/mayu/resources/types/stylesheet.rb', line 84

def assets
  source_map_link = "\n/*# sourceMappingURL=#{@filename}.map */\n"

  [
    Asset.new(
      @filename,
      Generators::WriteFile.new(
        contents: @source + source_map_link,
        compress: true
      )
    ),
    Asset.new(
      @filename + ".map",
      Generators::WriteFile.new(
        contents: JSON.generate(@source_map),
        compress: true
      )
    )
  ]
end

#classnamesObject



79
80
81
# File 'lib/mayu/resources/types/stylesheet.rb', line 79

def classnames
  @classnames ||= ClassNames.new(self.classes)
end

#marshal_dumpObject



108
109
110
# File 'lib/mayu/resources/types/stylesheet.rb', line 108

def marshal_dump
  [@classes, @source, @content_hash, @filename]
end

#marshal_load(args) ⇒ Object



113
114
115
# File 'lib/mayu/resources/types/stylesheet.rb', line 113

def marshal_load(args)
  @classes, @source, @content_hash, @filename = args
end