yass-css 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.
Files changed (429) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +11 -0
  3. data/CODE_OF_CONDUCT.md +132 -0
  4. data/Cargo.lock +1447 -0
  5. data/Cargo.toml +7 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +139 -0
  8. data/Rakefile +130 -0
  9. data/codegen/ruby_module_tree.rb +178 -0
  10. data/codegen/rust_file_set.rb +84 -0
  11. data/codegen/utils.rb +27 -0
  12. data/dockerfiles/windows.dockerfile +3 -0
  13. data/examples/basic_example.rb +32 -0
  14. data/examples/font_example.rb +19 -0
  15. data/examples/media_example.rb +31 -0
  16. data/examples/visitor_example.rb +41 -0
  17. data/ext/.DS_Store +0 -0
  18. data/ext/yass/Cargo.toml +24 -0
  19. data/ext/yass/extconf.rb +6 -0
  20. data/ext/yass/src/.DS_Store +0 -0
  21. data/ext/yass/src/cached_value.rs +48 -0
  22. data/ext/yass/src/cached_value_list.rs +63 -0
  23. data/ext/yass/src/declarations/.DS_Store +0 -0
  24. data/ext/yass/src/declarations/align_content.rs +19 -0
  25. data/ext/yass/src/declarations/align_flags.rs +26 -0
  26. data/ext/yass/src/declarations/align_items.rs +37 -0
  27. data/ext/yass/src/declarations/align_self.rs +19 -0
  28. data/ext/yass/src/declarations/alignment_baseline.rs +27 -0
  29. data/ext/yass/src/declarations/angle.rs +25 -0
  30. data/ext/yass/src/declarations/animation/auto.rs +8 -0
  31. data/ext/yass/src/declarations/animation/init.rs +40 -0
  32. data/ext/yass/src/declarations/animation/inset.rs +50 -0
  33. data/ext/yass/src/declarations/animation/length_auto.rs +8 -0
  34. data/ext/yass/src/declarations/animation/mod.rs +11 -0
  35. data/ext/yass/src/declarations/animation/range_value.rs +47 -0
  36. data/ext/yass/src/declarations/animation/scroll_axis.rs +22 -0
  37. data/ext/yass/src/declarations/animation/scroll_function.rs +40 -0
  38. data/ext/yass/src/declarations/animation/scroller.rs +21 -0
  39. data/ext/yass/src/declarations/animation/timeline_name.rs +16 -0
  40. data/ext/yass/src/declarations/animation/timing_function/cubic_bezier.rs +60 -0
  41. data/ext/yass/src/declarations/animation/timing_function/init.rs +29 -0
  42. data/ext/yass/src/declarations/animation/timing_function/keyword.rs +23 -0
  43. data/ext/yass/src/declarations/animation/timing_function/mod.rs +5 -0
  44. data/ext/yass/src/declarations/animation/timing_function/piecewise_linear_function.rs +49 -0
  45. data/ext/yass/src/declarations/animation/timing_function/steps.rs +30 -0
  46. data/ext/yass/src/declarations/animation/view_function.rs +40 -0
  47. data/ext/yass/src/declarations/animation_composition.rs +29 -0
  48. data/ext/yass/src/declarations/animation_delay.rs +30 -0
  49. data/ext/yass/src/declarations/animation_direction.rs +30 -0
  50. data/ext/yass/src/declarations/animation_duration.rs +67 -0
  51. data/ext/yass/src/declarations/animation_fill_mode.rs +30 -0
  52. data/ext/yass/src/declarations/animation_iteration_count.rs +33 -0
  53. data/ext/yass/src/declarations/animation_name.rs +23 -0
  54. data/ext/yass/src/declarations/animation_play_state.rs +28 -0
  55. data/ext/yass/src/declarations/animation_range_end.rs +30 -0
  56. data/ext/yass/src/declarations/animation_range_start.rs +30 -0
  57. data/ext/yass/src/declarations/animation_timeline.rs +42 -0
  58. data/ext/yass/src/declarations/animation_timing_function.rs +46 -0
  59. data/ext/yass/src/declarations/aspect_ratio.rs +43 -0
  60. data/ext/yass/src/declarations/backdrop_filter.rs +30 -0
  61. data/ext/yass/src/declarations/backface_visibility.rs +20 -0
  62. data/ext/yass/src/declarations/background_attachment.rs +25 -0
  63. data/ext/yass/src/declarations/background_blend_mode.rs +42 -0
  64. data/ext/yass/src/declarations/background_clip.rs +25 -0
  65. data/ext/yass/src/declarations/background_color.rs +30 -0
  66. data/ext/yass/src/declarations/background_image.rs +30 -0
  67. data/ext/yass/src/declarations/background_origin.rs +29 -0
  68. data/ext/yass/src/declarations/background_position_x.rs +30 -0
  69. data/ext/yass/src/declarations/background_position_y.rs +30 -0
  70. data/ext/yass/src/declarations/background_repeat.rs +58 -0
  71. data/ext/yass/src/declarations/background_size.rs +120 -0
  72. data/ext/yass/src/declarations/baseline_shift.rs +63 -0
  73. data/ext/yass/src/declarations/baseline_source.rs +21 -0
  74. data/ext/yass/src/declarations/block_size.rs +30 -0
  75. data/ext/yass/src/declarations/border_block_end_color.rs +30 -0
  76. data/ext/yass/src/declarations/border_block_end_style.rs +19 -0
  77. data/ext/yass/src/declarations/border_block_end_width.rs +24 -0
  78. data/ext/yass/src/declarations/border_block_start_color.rs +30 -0
  79. data/ext/yass/src/declarations/border_block_start_style.rs +19 -0
  80. data/ext/yass/src/declarations/border_block_start_width.rs +24 -0
  81. data/ext/yass/src/declarations/border_bottom_color.rs +30 -0
  82. data/ext/yass/src/declarations/border_bottom_left_radius.rs +40 -0
  83. data/ext/yass/src/declarations/border_bottom_right_radius.rs +40 -0
  84. data/ext/yass/src/declarations/border_bottom_style.rs +19 -0
  85. data/ext/yass/src/declarations/border_bottom_width.rs +24 -0
  86. data/ext/yass/src/declarations/border_collapse.rs +20 -0
  87. data/ext/yass/src/declarations/border_end_end_radius.rs +40 -0
  88. data/ext/yass/src/declarations/border_end_start_radius.rs +40 -0
  89. data/ext/yass/src/declarations/border_image_outset.rs +73 -0
  90. data/ext/yass/src/declarations/border_image_repeat.rs +30 -0
  91. data/ext/yass/src/declarations/border_image_slice.rs +78 -0
  92. data/ext/yass/src/declarations/border_image_source.rs +28 -0
  93. data/ext/yass/src/declarations/border_image_width.rs +85 -0
  94. data/ext/yass/src/declarations/border_inline_end_color.rs +30 -0
  95. data/ext/yass/src/declarations/border_inline_end_style.rs +19 -0
  96. data/ext/yass/src/declarations/border_inline_end_width.rs +24 -0
  97. data/ext/yass/src/declarations/border_inline_start_color.rs +30 -0
  98. data/ext/yass/src/declarations/border_inline_start_style.rs +19 -0
  99. data/ext/yass/src/declarations/border_inline_start_width.rs +24 -0
  100. data/ext/yass/src/declarations/border_left_color.rs +30 -0
  101. data/ext/yass/src/declarations/border_left_style.rs +19 -0
  102. data/ext/yass/src/declarations/border_left_width.rs +24 -0
  103. data/ext/yass/src/declarations/border_right_color.rs +30 -0
  104. data/ext/yass/src/declarations/border_right_style.rs +19 -0
  105. data/ext/yass/src/declarations/border_right_width.rs +24 -0
  106. data/ext/yass/src/declarations/border_spacing.rs +51 -0
  107. data/ext/yass/src/declarations/border_start_end_radius.rs +40 -0
  108. data/ext/yass/src/declarations/border_start_start_radius.rs +40 -0
  109. data/ext/yass/src/declarations/border_style.rs +17 -0
  110. data/ext/yass/src/declarations/border_top_color.rs +30 -0
  111. data/ext/yass/src/declarations/border_top_left_radius.rs +40 -0
  112. data/ext/yass/src/declarations/border_top_right_radius.rs +40 -0
  113. data/ext/yass/src/declarations/border_top_style.rs +19 -0
  114. data/ext/yass/src/declarations/border_top_width.rs +24 -0
  115. data/ext/yass/src/declarations/bottom.rs +28 -0
  116. data/ext/yass/src/declarations/box_shadow.rs +113 -0
  117. data/ext/yass/src/declarations/box_sizing.rs +20 -0
  118. data/ext/yass/src/declarations/calc/abs.rs +32 -0
  119. data/ext/yass/src/declarations/calc/anchor_function.rs +96 -0
  120. data/ext/yass/src/declarations/calc/anchor_size_function.rs +84 -0
  121. data/ext/yass/src/declarations/calc/clamp.rs +58 -0
  122. data/ext/yass/src/declarations/calc/hypot.rs +30 -0
  123. data/ext/yass/src/declarations/calc/init.rs +72 -0
  124. data/ext/yass/src/declarations/calc/invert.rs +32 -0
  125. data/ext/yass/src/declarations/calc/leaf.rs +36 -0
  126. data/ext/yass/src/declarations/calc/min_max.rs +40 -0
  127. data/ext/yass/src/declarations/calc/mod.rs +118 -0
  128. data/ext/yass/src/declarations/calc/mod_rem.rs +57 -0
  129. data/ext/yass/src/declarations/calc/negate.rs +32 -0
  130. data/ext/yass/src/declarations/calc/product.rs +30 -0
  131. data/ext/yass/src/declarations/calc/round.rs +59 -0
  132. data/ext/yass/src/declarations/calc/sign.rs +32 -0
  133. data/ext/yass/src/declarations/calc/sum.rs +30 -0
  134. data/ext/yass/src/declarations/caption_side.rs +20 -0
  135. data/ext/yass/src/declarations/caret_color.rs +32 -0
  136. data/ext/yass/src/declarations/channel_keyword.rs +31 -0
  137. data/ext/yass/src/declarations/clear.rs +24 -0
  138. data/ext/yass/src/declarations/clip.rs +135 -0
  139. data/ext/yass/src/declarations/clip_path/circle_ellipse.rs +168 -0
  140. data/ext/yass/src/declarations/clip_path/init.rs +267 -0
  141. data/ext/yass/src/declarations/clip_path/mod.rs +419 -0
  142. data/ext/yass/src/declarations/clip_path/path.rs +734 -0
  143. data/ext/yass/src/declarations/clip_path/rect.rs +288 -0
  144. data/ext/yass/src/declarations/clip_path/shape.rs +672 -0
  145. data/ext/yass/src/declarations/clip_path/shape_box.rs +71 -0
  146. data/ext/yass/src/declarations/color/absolute.rs +46 -0
  147. data/ext/yass/src/declarations/color/absolute_color.rs +53 -0
  148. data/ext/yass/src/declarations/color/auto.rs +8 -0
  149. data/ext/yass/src/declarations/color/color.rs +38 -0
  150. data/ext/yass/src/declarations/color/color_components.rs +25 -0
  151. data/ext/yass/src/declarations/color/color_function.rs +151 -0
  152. data/ext/yass/src/declarations/color/color_function_component.rs +61 -0
  153. data/ext/yass/src/declarations/color/color_interpolation_method.rs +29 -0
  154. data/ext/yass/src/declarations/color/color_mix.rs +60 -0
  155. data/ext/yass/src/declarations/color/color_mix_item.rs +43 -0
  156. data/ext/yass/src/declarations/color/current_color.rs +8 -0
  157. data/ext/yass/src/declarations/color/init.rs +60 -0
  158. data/ext/yass/src/declarations/color/light_dark.rs +43 -0
  159. data/ext/yass/src/declarations/color/mod.rs +69 -0
  160. data/ext/yass/src/declarations/color/stored_color_function_component.rs +70 -0
  161. data/ext/yass/src/declarations/color/system_color.rs +60 -0
  162. data/ext/yass/src/declarations/color_scheme.rs +26 -0
  163. data/ext/yass/src/declarations/column_count.rs +37 -0
  164. data/ext/yass/src/declarations/column_gap.rs +74 -0
  165. data/ext/yass/src/declarations/column_span.rs +20 -0
  166. data/ext/yass/src/declarations/column_width.rs +70 -0
  167. data/ext/yass/src/declarations/contain.rs +106 -0
  168. data/ext/yass/src/declarations/container_name.rs +32 -0
  169. data/ext/yass/src/declarations/container_type.rs +52 -0
  170. data/ext/yass/src/declarations/content.rs +309 -0
  171. data/ext/yass/src/declarations/counter_increment.rs +60 -0
  172. data/ext/yass/src/declarations/counter_reset.rs +60 -0
  173. data/ext/yass/src/declarations/csswide_keyword.rs +28 -0
  174. data/ext/yass/src/declarations/cursor.rs +125 -0
  175. data/ext/yass/src/declarations/custom.rs +108 -0
  176. data/ext/yass/src/declarations/declaration.rs +716 -0
  177. data/ext/yass/src/declarations/direction.rs +20 -0
  178. data/ext/yass/src/declarations/display.rs +74 -0
  179. data/ext/yass/src/declarations/empty_cells.rs +20 -0
  180. data/ext/yass/src/declarations/filter/blur.rs +28 -0
  181. data/ext/yass/src/declarations/filter/brightness.rs +30 -0
  182. data/ext/yass/src/declarations/filter/contrast.rs +30 -0
  183. data/ext/yass/src/declarations/filter/drop_shadow.rs +68 -0
  184. data/ext/yass/src/declarations/filter/grayscale.rs +30 -0
  185. data/ext/yass/src/declarations/filter/hue_rotate.rs +28 -0
  186. data/ext/yass/src/declarations/filter/init.rs +43 -0
  187. data/ext/yass/src/declarations/filter/invert.rs +30 -0
  188. data/ext/yass/src/declarations/filter/mod.rs +80 -0
  189. data/ext/yass/src/declarations/filter/opacity.rs +30 -0
  190. data/ext/yass/src/declarations/filter/saturate.rs +30 -0
  191. data/ext/yass/src/declarations/filter/sepia.rs +30 -0
  192. data/ext/yass/src/declarations/flex_basis.rs +71 -0
  193. data/ext/yass/src/declarations/flex_direction.rs +22 -0
  194. data/ext/yass/src/declarations/flex_grow.rs +30 -0
  195. data/ext/yass/src/declarations/flex_shrink.rs +30 -0
  196. data/ext/yass/src/declarations/flex_wrap.rs +21 -0
  197. data/ext/yass/src/declarations/float.rs +23 -0
  198. data/ext/yass/src/declarations/font_family.rs +28 -0
  199. data/ext/yass/src/declarations/font_language_override.rs +30 -0
  200. data/ext/yass/src/declarations/font_optical_sizing.rs +20 -0
  201. data/ext/yass/src/declarations/font_size.rs +126 -0
  202. data/ext/yass/src/declarations/font_stretch.rs +102 -0
  203. data/ext/yass/src/declarations/font_style.rs +101 -0
  204. data/ext/yass/src/declarations/font_synthesis_weight.rs +20 -0
  205. data/ext/yass/src/declarations/font_variant_caps.rs +20 -0
  206. data/ext/yass/src/declarations/font_variation_settings.rs +54 -0
  207. data/ext/yass/src/declarations/font_weight.rs +85 -0
  208. data/ext/yass/src/declarations/grid_auto_columns.rs +32 -0
  209. data/ext/yass/src/declarations/grid_auto_flow.rs +35 -0
  210. data/ext/yass/src/declarations/grid_auto_rows.rs +33 -0
  211. data/ext/yass/src/declarations/grid_column_end.rs +39 -0
  212. data/ext/yass/src/declarations/grid_column_start.rs +39 -0
  213. data/ext/yass/src/declarations/grid_row_end.rs +39 -0
  214. data/ext/yass/src/declarations/grid_row_start.rs +39 -0
  215. data/ext/yass/src/declarations/grid_template.rs +355 -0
  216. data/ext/yass/src/declarations/grid_template_areas.rs +131 -0
  217. data/ext/yass/src/declarations/grid_template_columns.rs +31 -0
  218. data/ext/yass/src/declarations/grid_template_rows.rs +31 -0
  219. data/ext/yass/src/declarations/height.rs +30 -0
  220. data/ext/yass/src/declarations/horizontal_position_component.rs +93 -0
  221. data/ext/yass/src/declarations/image_rendering.rs +21 -0
  222. data/ext/yass/src/declarations/images/angle_or_percentage.rs +35 -0
  223. data/ext/yass/src/declarations/images/circle.rs +72 -0
  224. data/ext/yass/src/declarations/images/conic_gradient.rs +80 -0
  225. data/ext/yass/src/declarations/images/cross_fade.rs +33 -0
  226. data/ext/yass/src/declarations/images/cross_fade_element.rs +44 -0
  227. data/ext/yass/src/declarations/images/cross_fade_image.rs +68 -0
  228. data/ext/yass/src/declarations/images/ellipse.rs +67 -0
  229. data/ext/yass/src/declarations/images/ending_shape.rs +38 -0
  230. data/ext/yass/src/declarations/images/gradient_angle_or_percentage_item.rs +103 -0
  231. data/ext/yass/src/declarations/images/gradient_length_percentage_item.rs +106 -0
  232. data/ext/yass/src/declarations/images/image_set.rs +30 -0
  233. data/ext/yass/src/declarations/images/image_set_item.rs +53 -0
  234. data/ext/yass/src/declarations/images/init.rs +145 -0
  235. data/ext/yass/src/declarations/images/light_dark.rs +40 -0
  236. data/ext/yass/src/declarations/images/line_direction.rs +100 -0
  237. data/ext/yass/src/declarations/images/linear_gradient.rs +75 -0
  238. data/ext/yass/src/declarations/images/mod.rs +93 -0
  239. data/ext/yass/src/declarations/images/none.rs +8 -0
  240. data/ext/yass/src/declarations/images/position.rs +40 -0
  241. data/ext/yass/src/declarations/images/radial_gradient.rs +86 -0
  242. data/ext/yass/src/declarations/images/url.rs +28 -0
  243. data/ext/yass/src/declarations/init.rs +1620 -0
  244. data/ext/yass/src/declarations/inline_size.rs +30 -0
  245. data/ext/yass/src/declarations/inset.rs +114 -0
  246. data/ext/yass/src/declarations/inset_block_end.rs +28 -0
  247. data/ext/yass/src/declarations/inset_block_start.rs +28 -0
  248. data/ext/yass/src/declarations/inset_inline_end.rs +28 -0
  249. data/ext/yass/src/declarations/inset_inline_start.rs +28 -0
  250. data/ext/yass/src/declarations/isolation.rs +20 -0
  251. data/ext/yass/src/declarations/justify_content.rs +19 -0
  252. data/ext/yass/src/declarations/justify_items.rs +37 -0
  253. data/ext/yass/src/declarations/justify_self.rs +19 -0
  254. data/ext/yass/src/declarations/left.rs +28 -0
  255. data/ext/yass/src/declarations/length.rs +230 -0
  256. data/ext/yass/src/declarations/letter_spacing.rs +47 -0
  257. data/ext/yass/src/declarations/line_break.rs +23 -0
  258. data/ext/yass/src/declarations/line_height.rs +51 -0
  259. data/ext/yass/src/declarations/list_style_image.rs +28 -0
  260. data/ext/yass/src/declarations/list_style_position.rs +20 -0
  261. data/ext/yass/src/declarations/list_style_type.rs +132 -0
  262. data/ext/yass/src/declarations/margin.rs +103 -0
  263. data/ext/yass/src/declarations/margin_block_end.rs +28 -0
  264. data/ext/yass/src/declarations/margin_block_start.rs +28 -0
  265. data/ext/yass/src/declarations/margin_bottom.rs +28 -0
  266. data/ext/yass/src/declarations/margin_inline_end.rs +28 -0
  267. data/ext/yass/src/declarations/margin_inline_start.rs +28 -0
  268. data/ext/yass/src/declarations/margin_left.rs +28 -0
  269. data/ext/yass/src/declarations/margin_right.rs +28 -0
  270. data/ext/yass/src/declarations/margin_top.rs +28 -0
  271. data/ext/yass/src/declarations/mask_image.rs +30 -0
  272. data/ext/yass/src/declarations/max_block_size.rs +30 -0
  273. data/ext/yass/src/declarations/max_height.rs +30 -0
  274. data/ext/yass/src/declarations/max_inline_size.rs +30 -0
  275. data/ext/yass/src/declarations/max_width.rs +30 -0
  276. data/ext/yass/src/declarations/min_block_size.rs +30 -0
  277. data/ext/yass/src/declarations/min_height.rs +30 -0
  278. data/ext/yass/src/declarations/min_inline_size.rs +30 -0
  279. data/ext/yass/src/declarations/min_width.rs +30 -0
  280. data/ext/yass/src/declarations/mix_blend_mode.rs +35 -0
  281. data/ext/yass/src/declarations/mod.rs +257 -0
  282. data/ext/yass/src/declarations/number.rs +16 -0
  283. data/ext/yass/src/declarations/object_fit.rs +23 -0
  284. data/ext/yass/src/declarations/object_position.rs +40 -0
  285. data/ext/yass/src/declarations/offset_path.rs +275 -0
  286. data/ext/yass/src/declarations/opacity.rs +39 -0
  287. data/ext/yass/src/declarations/order.rs +17 -0
  288. data/ext/yass/src/declarations/outline_color.rs +30 -0
  289. data/ext/yass/src/declarations/outline_offset.rs +22 -0
  290. data/ext/yass/src/declarations/outline_style.rs +22 -0
  291. data/ext/yass/src/declarations/outline_width.rs +24 -0
  292. data/ext/yass/src/declarations/overflow.rs +12 -0
  293. data/ext/yass/src/declarations/overflow_block.rs +19 -0
  294. data/ext/yass/src/declarations/overflow_clip_margin.rs +40 -0
  295. data/ext/yass/src/declarations/overflow_inline.rs +19 -0
  296. data/ext/yass/src/declarations/overflow_wrap.rs +21 -0
  297. data/ext/yass/src/declarations/overflow_x.rs +19 -0
  298. data/ext/yass/src/declarations/overflow_y.rs +19 -0
  299. data/ext/yass/src/declarations/padding_block_end.rs +30 -0
  300. data/ext/yass/src/declarations/padding_block_start.rs +30 -0
  301. data/ext/yass/src/declarations/padding_bottom.rs +30 -0
  302. data/ext/yass/src/declarations/padding_inline_end.rs +30 -0
  303. data/ext/yass/src/declarations/padding_inline_start.rs +30 -0
  304. data/ext/yass/src/declarations/padding_left.rs +30 -0
  305. data/ext/yass/src/declarations/padding_right.rs +30 -0
  306. data/ext/yass/src/declarations/padding_top.rs +30 -0
  307. data/ext/yass/src/declarations/percentage.rs +16 -0
  308. data/ext/yass/src/declarations/perspective.rs +72 -0
  309. data/ext/yass/src/declarations/perspective_origin.rs +41 -0
  310. data/ext/yass/src/declarations/pointer_events.rs +20 -0
  311. data/ext/yass/src/declarations/position.rs +23 -0
  312. data/ext/yass/src/declarations/position_area.rs +82 -0
  313. data/ext/yass/src/declarations/position_try_fallbacks.rs +175 -0
  314. data/ext/yass/src/declarations/quotes.rs +107 -0
  315. data/ext/yass/src/declarations/resolution.rs +17 -0
  316. data/ext/yass/src/declarations/right.rs +28 -0
  317. data/ext/yass/src/declarations/rotate.rs +103 -0
  318. data/ext/yass/src/declarations/row_gap.rs +74 -0
  319. data/ext/yass/src/declarations/scale.rs +90 -0
  320. data/ext/yass/src/declarations/servo_overflow_clip_box.rs +20 -0
  321. data/ext/yass/src/declarations/servo_top_layer.rs +20 -0
  322. data/ext/yass/src/declarations/size/anchor_max_size_function.rs +53 -0
  323. data/ext/yass/src/declarations/size/anchor_size_function.rs +56 -0
  324. data/ext/yass/src/declarations/size/anchor_size_keyword.rs +25 -0
  325. data/ext/yass/src/declarations/size/init.rs +45 -0
  326. data/ext/yass/src/declarations/size/mod.rs +227 -0
  327. data/ext/yass/src/declarations/table_layout.rs +20 -0
  328. data/ext/yass/src/declarations/text_align.rs +31 -0
  329. data/ext/yass/src/declarations/text_align_last.rs +25 -0
  330. data/ext/yass/src/declarations/text_decoration_color.rs +30 -0
  331. data/ext/yass/src/declarations/text_decoration_line.rs +77 -0
  332. data/ext/yass/src/declarations/text_decoration_style.rs +24 -0
  333. data/ext/yass/src/declarations/text_indent.rs +40 -0
  334. data/ext/yass/src/declarations/text_justify.rs +22 -0
  335. data/ext/yass/src/declarations/text_overflow.rs +86 -0
  336. data/ext/yass/src/declarations/text_rendering.rs +22 -0
  337. data/ext/yass/src/declarations/text_shadow.rs +98 -0
  338. data/ext/yass/src/declarations/text_transform.rs +50 -0
  339. data/ext/yass/src/declarations/text_wrap_mode.rs +20 -0
  340. data/ext/yass/src/declarations/time.rs +21 -0
  341. data/ext/yass/src/declarations/top.rs +28 -0
  342. data/ext/yass/src/declarations/track_breadth.rs +88 -0
  343. data/ext/yass/src/declarations/track_size.rs +71 -0
  344. data/ext/yass/src/declarations/transform.rs +844 -0
  345. data/ext/yass/src/declarations/transform_origin.rs +99 -0
  346. data/ext/yass/src/declarations/transform_style.rs +20 -0
  347. data/ext/yass/src/declarations/transition_behavior.rs +28 -0
  348. data/ext/yass/src/declarations/transition_delay.rs +30 -0
  349. data/ext/yass/src/declarations/transition_duration.rs +30 -0
  350. data/ext/yass/src/declarations/transition_property.rs +122 -0
  351. data/ext/yass/src/declarations/transition_timing_function.rs +46 -0
  352. data/ext/yass/src/declarations/translate.rs +84 -0
  353. data/ext/yass/src/declarations/unicode_bidi.rs +24 -0
  354. data/ext/yass/src/declarations/vertical_position_component.rs +93 -0
  355. data/ext/yass/src/declarations/view_transition_class.rs +31 -0
  356. data/ext/yass/src/declarations/view_transition_name.rs +18 -0
  357. data/ext/yass/src/declarations/visibility.rs +21 -0
  358. data/ext/yass/src/declarations/webkit_text_security.rs +22 -0
  359. data/ext/yass/src/declarations/white_space_collapse.rs +22 -0
  360. data/ext/yass/src/declarations/width.rs +30 -0
  361. data/ext/yass/src/declarations/will_change.rs +83 -0
  362. data/ext/yass/src/declarations/with_variables.rs +35 -0
  363. data/ext/yass/src/declarations/word_break.rs +21 -0
  364. data/ext/yass/src/declarations/word_spacing.rs +47 -0
  365. data/ext/yass/src/declarations/writing_mode.rs +21 -0
  366. data/ext/yass/src/declarations/xlang.rs +21 -0
  367. data/ext/yass/src/declarations/zindex.rs +61 -0
  368. data/ext/yass/src/declarations/zoom.rs +87 -0
  369. data/ext/yass/src/general/init.rs +15 -0
  370. data/ext/yass/src/general/mod.rs +43 -0
  371. data/ext/yass/src/lib.rs +72 -0
  372. data/ext/yass/src/optional_cached_value.rs +33 -0
  373. data/ext/yass/src/rules/font_face_rule.rs +206 -0
  374. data/ext/yass/src/rules/fonts/family.rs +98 -0
  375. data/ext/yass/src/rules/fonts/init.rs +81 -0
  376. data/ext/yass/src/rules/fonts/metrics.rs +26 -0
  377. data/ext/yass/src/rules/fonts/mod.rs +7 -0
  378. data/ext/yass/src/rules/fonts/source.rs +126 -0
  379. data/ext/yass/src/rules/fonts/stretch.rs +96 -0
  380. data/ext/yass/src/rules/fonts/style.rs +59 -0
  381. data/ext/yass/src/rules/fonts/weight.rs +74 -0
  382. data/ext/yass/src/rules/init.rs +89 -0
  383. data/ext/yass/src/rules/media_rule.rs +474 -0
  384. data/ext/yass/src/rules/mod.rs +6 -0
  385. data/ext/yass/src/rules/rule.rs +33 -0
  386. data/ext/yass/src/rules/style_rule.rs +82 -0
  387. data/ext/yass/src/selectors/an_plus_b.rs +21 -0
  388. data/ext/yass/src/selectors/attribute_in_no_namespace.rs +34 -0
  389. data/ext/yass/src/selectors/attribute_in_no_namespace_exists.rs +16 -0
  390. data/ext/yass/src/selectors/attribute_other.rs +41 -0
  391. data/ext/yass/src/selectors/class.rs +16 -0
  392. data/ext/yass/src/selectors/combinator.rs +49 -0
  393. data/ext/yass/src/selectors/default_namespace.rs +16 -0
  394. data/ext/yass/src/selectors/has.rs +31 -0
  395. data/ext/yass/src/selectors/host.rs +35 -0
  396. data/ext/yass/src/selectors/id.rs +16 -0
  397. data/ext/yass/src/selectors/init.rs +146 -0
  398. data/ext/yass/src/selectors/is.rs +27 -0
  399. data/ext/yass/src/selectors/local_name.rs +18 -0
  400. data/ext/yass/src/selectors/mod.rs +54 -0
  401. data/ext/yass/src/selectors/namespace.rs +21 -0
  402. data/ext/yass/src/selectors/negation.rs +27 -0
  403. data/ext/yass/src/selectors/non_ts_pseudo_class.rs +63 -0
  404. data/ext/yass/src/selectors/nth.rs +51 -0
  405. data/ext/yass/src/selectors/nth_of.rs +43 -0
  406. data/ext/yass/src/selectors/part.rs +22 -0
  407. data/ext/yass/src/selectors/relative_selector.rs +40 -0
  408. data/ext/yass/src/selectors/selector.rs +230 -0
  409. data/ext/yass/src/selectors/selector_child.rs +460 -0
  410. data/ext/yass/src/selectors/selector_list.rs +27 -0
  411. data/ext/yass/src/selectors/slotted.rs +28 -0
  412. data/ext/yass/src/selectors/specific_namespace_constraint.rs +21 -0
  413. data/ext/yass/src/selectors/unit_selectors.rs +87 -0
  414. data/ext/yass/src/selectors/where.rs +27 -0
  415. data/ext/yass/src/sheet.rs +42 -0
  416. data/ext/yass/src/utils.rs +9 -0
  417. data/lib/yass/declarations.rb +7975 -0
  418. data/lib/yass/general.rb +31 -0
  419. data/lib/yass/node.rb +9 -0
  420. data/lib/yass/rules.rb +515 -0
  421. data/lib/yass/selectors.rb +325 -0
  422. data/lib/yass/stylesheet.rb +13 -0
  423. data/lib/yass/version.rb +5 -0
  424. data/lib/yass/visitor.rb +2463 -0
  425. data/lib/yass.rb +49 -0
  426. data/scripts/build_all.sh +44 -0
  427. data/scripts/detect.rb +39 -0
  428. data/scripts/wpt.rb +20 -0
  429. metadata +486 -0
@@ -0,0 +1,30 @@
1
+ use magnus::{DataTypeFunctions, Ruby, TypedData, Value, gc, typed_data};
2
+ use style::values::specified::MaxSize;
3
+
4
+ use crate::{cached_value::CachedValue, declarations::size::make_max_size};
5
+
6
+ #[derive(TypedData)]
7
+ #[magnus(class = "Yass::Declarations::MaxInlineSize", mark)]
8
+ pub struct YMaxInlineSize {
9
+ max_size: CachedValue<MaxSize>
10
+ }
11
+
12
+ impl YMaxInlineSize {
13
+ pub fn new(max_size: MaxSize) -> Self {
14
+ Self {
15
+ max_size: CachedValue::new(max_size, |ms, ruby| {
16
+ make_max_size(ms, ruby)
17
+ })
18
+ }
19
+ }
20
+
21
+ pub fn size(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
22
+ rb_self.max_size.get(ruby)
23
+ }
24
+ }
25
+
26
+ impl DataTypeFunctions for YMaxInlineSize {
27
+ fn mark(&self, marker: &gc::Marker) {
28
+ self.max_size.mark(marker);
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ use magnus::{DataTypeFunctions, Ruby, TypedData, Value, gc, typed_data};
2
+ use style::values::specified::MaxSize;
3
+
4
+ use crate::{cached_value::CachedValue, declarations::size::make_max_size};
5
+
6
+ #[derive(TypedData)]
7
+ #[magnus(class = "Yass::Declarations::MaxWidth", mark)]
8
+ pub struct YMaxWidth {
9
+ max_size: CachedValue<MaxSize>
10
+ }
11
+
12
+ impl YMaxWidth {
13
+ pub fn new(max_size: MaxSize) -> Self {
14
+ Self {
15
+ max_size: CachedValue::new(max_size, |ms, ruby| {
16
+ make_max_size(ms, ruby)
17
+ })
18
+ }
19
+ }
20
+
21
+ pub fn size(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
22
+ rb_self.max_size.get(ruby)
23
+ }
24
+ }
25
+
26
+ impl DataTypeFunctions for YMaxWidth {
27
+ fn mark(&self, marker: &gc::Marker) {
28
+ self.max_size.mark(marker);
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ use magnus::{DataTypeFunctions, Ruby, TypedData, Value, gc, typed_data};
2
+ use style::values::specified::Size;
3
+
4
+ use crate::{cached_value::CachedValue, declarations::size::make_size};
5
+
6
+ #[derive(TypedData)]
7
+ #[magnus(class = "Yass::Declarations::MinBlockSize", mark)]
8
+ pub struct YMinBlockSize {
9
+ size: CachedValue<Size>
10
+ }
11
+
12
+ impl YMinBlockSize {
13
+ pub fn new(size: Size) -> Self {
14
+ Self {
15
+ size: CachedValue::new(size, |s, ruby| {
16
+ make_size(s, ruby)
17
+ })
18
+ }
19
+ }
20
+
21
+ pub fn size(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
22
+ rb_self.size.get(ruby)
23
+ }
24
+ }
25
+
26
+ impl DataTypeFunctions for YMinBlockSize {
27
+ fn mark(&self, marker: &gc::Marker) {
28
+ self.size.mark(marker);
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ use magnus::{DataTypeFunctions, Ruby, TypedData, Value, gc, typed_data};
2
+ use style::values::specified::Size;
3
+
4
+ use crate::{cached_value::CachedValue, declarations::size::make_size};
5
+
6
+ #[derive(TypedData)]
7
+ #[magnus(class = "Yass::Declarations::MinHeight", mark)]
8
+ pub struct YMinHeight {
9
+ size: CachedValue<Size>
10
+ }
11
+
12
+ impl YMinHeight {
13
+ pub fn new(size: Size) -> Self {
14
+ Self {
15
+ size: CachedValue::new(size, |s, ruby| {
16
+ make_size(s, ruby)
17
+ })
18
+ }
19
+ }
20
+
21
+ pub fn size(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
22
+ rb_self.size.get(ruby)
23
+ }
24
+ }
25
+
26
+ impl DataTypeFunctions for YMinHeight {
27
+ fn mark(&self, marker: &gc::Marker) {
28
+ self.size.mark(marker);
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ use magnus::{DataTypeFunctions, Ruby, TypedData, Value, gc, typed_data};
2
+ use style::values::specified::Size;
3
+
4
+ use crate::{cached_value::CachedValue, declarations::size::make_size};
5
+
6
+ #[derive(TypedData)]
7
+ #[magnus(class = "Yass::Declarations::MinInlineSize", mark)]
8
+ pub struct YMinInlineSize {
9
+ size: CachedValue<Size>
10
+ }
11
+
12
+ impl YMinInlineSize {
13
+ pub fn new(size: Size) -> Self {
14
+ Self {
15
+ size: CachedValue::new(size, |s, ruby| {
16
+ make_size(s, ruby)
17
+ })
18
+ }
19
+ }
20
+
21
+ pub fn size(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
22
+ rb_self.size.get(ruby)
23
+ }
24
+ }
25
+
26
+ impl DataTypeFunctions for YMinInlineSize {
27
+ fn mark(&self, marker: &gc::Marker) {
28
+ self.size.mark(marker);
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ use magnus::{DataTypeFunctions, Ruby, TypedData, Value, gc, typed_data};
2
+ use style::values::specified::Size;
3
+
4
+ use crate::{cached_value::CachedValue, declarations::size::make_size};
5
+
6
+ #[derive(TypedData)]
7
+ #[magnus(class = "Yass::Declarations::MinWidth", mark)]
8
+ pub struct YMinWidth {
9
+ size: CachedValue<Size>
10
+ }
11
+
12
+ impl YMinWidth {
13
+ pub fn new(size: Size) -> Self {
14
+ Self {
15
+ size: CachedValue::new(size, |s, ruby| {
16
+ make_size(s, ruby)
17
+ })
18
+ }
19
+ }
20
+
21
+ pub fn size(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
22
+ rb_self.size.get(ruby)
23
+ }
24
+ }
25
+
26
+ impl DataTypeFunctions for YMinWidth {
27
+ fn mark(&self, marker: &gc::Marker) {
28
+ self.size.mark(marker);
29
+ }
30
+ }
@@ -0,0 +1,35 @@
1
+ use magnus::{Ruby, typed_data, value::Id};
2
+ use style::computed_values::mix_blend_mode::T;
3
+
4
+ #[magnus::wrap(class = "Yass::Declarations::MixBlendMode")]
5
+ pub struct YMixBlendMode {
6
+ specified_value: T
7
+ }
8
+
9
+ impl YMixBlendMode {
10
+ pub fn new(specified_value: T) -> Self {
11
+ Self { specified_value }
12
+ }
13
+
14
+ pub fn value(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Id {
15
+ match rb_self.specified_value {
16
+ T::Normal => ruby.intern("normal"),
17
+ T::Multiply => ruby.intern("multiply"),
18
+ T::Screen => ruby.intern("screen"),
19
+ T::Overlay => ruby.intern("overlay"),
20
+ T::Darken => ruby.intern("darken"),
21
+ T::Lighten => ruby.intern("lighten"),
22
+ T::ColorDodge => ruby.intern("color_dodge"),
23
+ T::ColorBurn => ruby.intern("color_burn"),
24
+ T::HardLight => ruby.intern("hard_light"),
25
+ T::SoftLight => ruby.intern("soft_light"),
26
+ T::Difference => ruby.intern("difference"),
27
+ T::Exclusion => ruby.intern("exclusion"),
28
+ T::Hue => ruby.intern("hue"),
29
+ T::Saturation => ruby.intern("saturation"),
30
+ T::Color => ruby.intern("color"),
31
+ T::Luminosity => ruby.intern("luminosity"),
32
+ T::PlusLighter => ruby.intern("plus_lighter"),
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,257 @@
1
+ pub mod align_content;
2
+ pub mod align_flags;
3
+ pub mod align_items;
4
+ pub mod align_self;
5
+ pub mod alignment_baseline;
6
+ pub mod angle;
7
+ pub mod animation;
8
+ pub mod animation_composition;
9
+ pub mod animation_delay;
10
+ pub mod animation_direction;
11
+ pub mod animation_duration;
12
+ pub mod animation_fill_mode;
13
+ pub mod animation_iteration_count;
14
+ pub mod animation_name;
15
+ pub mod animation_play_state;
16
+ pub mod animation_range_end;
17
+ pub mod animation_range_start;
18
+ pub mod animation_timeline;
19
+ pub mod animation_timing_function;
20
+ pub mod aspect_ratio;
21
+ pub mod backdrop_filter;
22
+ pub mod backface_visibility;
23
+ pub mod background_attachment;
24
+ pub mod background_blend_mode;
25
+ pub mod background_clip;
26
+ pub mod background_color;
27
+ pub mod background_image;
28
+ pub mod background_origin;
29
+ pub mod background_position_x;
30
+ pub mod background_position_y;
31
+ pub mod background_repeat;
32
+ pub mod background_size;
33
+ pub mod baseline_shift;
34
+ pub mod baseline_source;
35
+ pub mod block_size;
36
+ pub mod border_block_end_color;
37
+ pub mod border_block_end_style;
38
+ pub mod border_block_end_width;
39
+ pub mod border_block_start_color;
40
+ pub mod border_block_start_style;
41
+ pub mod border_block_start_width;
42
+ pub mod border_bottom_color;
43
+ pub mod border_bottom_left_radius;
44
+ pub mod border_bottom_right_radius;
45
+ pub mod border_bottom_style;
46
+ pub mod border_bottom_width;
47
+ pub mod border_style;
48
+ pub mod border_collapse;
49
+ pub mod border_end_end_radius;
50
+ pub mod border_end_start_radius;
51
+ pub mod border_image_outset;
52
+ pub mod border_image_repeat;
53
+ pub mod border_image_slice;
54
+ pub mod border_image_source;
55
+ pub mod border_image_width;
56
+ pub mod border_inline_end_color;
57
+ pub mod border_inline_end_style;
58
+ pub mod border_inline_end_width;
59
+ pub mod border_inline_start_color;
60
+ pub mod border_inline_start_style;
61
+ pub mod border_inline_start_width;
62
+ pub mod border_left_color;
63
+ pub mod border_left_style;
64
+ pub mod border_left_width;
65
+ pub mod border_right_color;
66
+ pub mod border_right_style;
67
+ pub mod border_right_width;
68
+ pub mod border_spacing;
69
+ pub mod border_start_end_radius;
70
+ pub mod border_start_start_radius;
71
+ pub mod border_top_color;
72
+ pub mod border_top_left_radius;
73
+ pub mod border_top_right_radius;
74
+ pub mod border_top_style;
75
+ pub mod border_top_width;
76
+ pub mod bottom;
77
+ pub mod box_shadow;
78
+ pub mod box_sizing;
79
+ pub mod calc;
80
+ pub mod caption_side;
81
+ pub mod caret_color;
82
+ pub mod channel_keyword;
83
+ pub mod clear;
84
+ pub mod clip_path;
85
+ pub mod clip;
86
+ pub mod color;
87
+ pub mod color_scheme;
88
+ pub mod column_count;
89
+ pub mod column_gap;
90
+ pub mod column_span;
91
+ pub mod column_width;
92
+ pub mod contain;
93
+ pub mod container_name;
94
+ pub mod container_type;
95
+ pub mod content;
96
+ pub mod counter_increment;
97
+ pub mod counter_reset;
98
+ pub mod csswide_keyword;
99
+ pub mod cursor;
100
+ pub mod custom;
101
+ pub mod declaration;
102
+ pub mod direction;
103
+ pub mod display;
104
+ pub mod empty_cells;
105
+ pub mod filter;
106
+ pub mod flex_basis;
107
+ pub mod flex_direction;
108
+ pub mod flex_grow;
109
+ pub mod flex_shrink;
110
+ pub mod flex_wrap;
111
+ pub mod float;
112
+ pub mod font_family;
113
+ pub mod font_language_override;
114
+ pub mod font_optical_sizing;
115
+ pub mod font_size;
116
+ pub mod font_stretch;
117
+ pub mod font_style;
118
+ pub mod font_synthesis_weight;
119
+ pub mod font_variant_caps;
120
+ pub mod font_variation_settings;
121
+ pub mod font_weight;
122
+ pub mod grid_auto_columns;
123
+ pub mod grid_auto_flow;
124
+ pub mod grid_auto_rows;
125
+ pub mod grid_column_end;
126
+ pub mod grid_column_start;
127
+ pub mod grid_row_end;
128
+ pub mod grid_row_start;
129
+ pub mod grid_template_areas;
130
+ pub mod grid_template_columns;
131
+ pub mod grid_template_rows;
132
+ pub mod grid_template;
133
+ pub mod height;
134
+ pub mod horizontal_position_component;
135
+ pub mod images;
136
+ pub mod image_rendering;
137
+ pub mod init;
138
+ pub mod inline_size;
139
+ pub mod inset;
140
+ pub mod inset_block_end;
141
+ pub mod inset_block_start;
142
+ pub mod inset_inline_end;
143
+ pub mod inset_inline_start;
144
+ pub mod isolation;
145
+ pub mod justify_content;
146
+ pub mod justify_items;
147
+ pub mod justify_self;
148
+ pub mod left;
149
+ pub mod length;
150
+ pub mod letter_spacing;
151
+ pub mod line_break;
152
+ pub mod line_height;
153
+ pub mod list_style_image;
154
+ pub mod list_style_position;
155
+ pub mod list_style_type;
156
+ pub mod margin;
157
+ pub mod margin_block_end;
158
+ pub mod margin_block_start;
159
+ pub mod margin_bottom;
160
+ pub mod margin_inline_end;
161
+ pub mod margin_inline_start;
162
+ pub mod margin_left;
163
+ pub mod margin_right;
164
+ pub mod margin_top;
165
+ pub mod mask_image;
166
+ pub mod max_block_size;
167
+ pub mod max_height;
168
+ pub mod max_inline_size;
169
+ pub mod max_width;
170
+ pub mod min_block_size;
171
+ pub mod min_height;
172
+ pub mod min_inline_size;
173
+ pub mod min_width;
174
+ pub mod mix_blend_mode;
175
+ pub mod number;
176
+ pub mod object_fit;
177
+ pub mod object_position;
178
+ pub mod offset_path;
179
+ pub mod opacity;
180
+ pub mod order;
181
+ pub mod outline_color;
182
+ pub mod outline_offset;
183
+ pub mod outline_style;
184
+ pub mod outline_width;
185
+ pub mod overflow_block;
186
+ pub mod overflow_clip_margin;
187
+ pub mod overflow_inline;
188
+ pub mod overflow_wrap;
189
+ pub mod overflow_x;
190
+ pub mod overflow_y;
191
+ pub mod overflow;
192
+ pub mod padding_block_end;
193
+ pub mod padding_block_start;
194
+ pub mod padding_bottom;
195
+ pub mod padding_inline_end;
196
+ pub mod padding_inline_start;
197
+ pub mod padding_left;
198
+ pub mod padding_right;
199
+ pub mod padding_top;
200
+ pub mod percentage;
201
+ pub mod perspective_origin;
202
+ pub mod perspective;
203
+ pub mod pointer_events;
204
+ pub mod position_area;
205
+ pub mod position_try_fallbacks;
206
+ pub mod position;
207
+ pub mod quotes;
208
+ pub mod resolution;
209
+ pub mod right;
210
+ pub mod rotate;
211
+ pub mod row_gap;
212
+ pub mod scale;
213
+ pub mod servo_overflow_clip_box;
214
+ pub mod servo_top_layer;
215
+ pub mod size;
216
+ pub mod table_layout;
217
+ pub mod text_align_last;
218
+ pub mod text_align;
219
+ pub mod text_decoration_color;
220
+ pub mod text_decoration_line;
221
+ pub mod text_decoration_style;
222
+ pub mod text_indent;
223
+ pub mod text_justify;
224
+ pub mod text_overflow;
225
+ pub mod text_rendering;
226
+ pub mod text_shadow;
227
+ pub mod text_transform;
228
+ pub mod text_wrap_mode;
229
+ pub mod track_breadth;
230
+ pub mod track_size;
231
+ pub mod time;
232
+ pub mod top;
233
+ pub mod transform_origin;
234
+ pub mod transform_style;
235
+ pub mod transform;
236
+ pub mod transition_behavior;
237
+ pub mod transition_delay;
238
+ pub mod transition_duration;
239
+ pub mod transition_property;
240
+ pub mod transition_timing_function;
241
+ pub mod translate;
242
+ pub mod unicode_bidi;
243
+ pub mod vertical_position_component;
244
+ pub mod view_transition_class;
245
+ pub mod view_transition_name;
246
+ pub mod visibility;
247
+ pub mod webkit_text_security;
248
+ pub mod white_space_collapse;
249
+ pub mod width;
250
+ pub mod will_change;
251
+ pub mod with_variables;
252
+ pub mod word_break;
253
+ pub mod word_spacing;
254
+ pub mod writing_mode;
255
+ pub mod xlang;
256
+ pub mod zindex;
257
+ pub mod zoom;
@@ -0,0 +1,16 @@
1
+ use magnus::{Ruby, typed_data};
2
+
3
+ #[magnus::wrap(class = "Yass::Declarations::Number")]
4
+ pub struct YNumber {
5
+ value: f32
6
+ }
7
+
8
+ impl YNumber {
9
+ pub fn new(value: f32) -> Self {
10
+ Self { value }
11
+ }
12
+
13
+ pub fn value(_ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> f32 {
14
+ rb_self.value
15
+ }
16
+ }
@@ -0,0 +1,23 @@
1
+ use magnus::{Ruby, typed_data, value::Id};
2
+ use style::computed_values::object_fit::T;
3
+
4
+ #[magnus::wrap(class = "Yass::Declarations::ObjectFit")]
5
+ pub struct YObjectFit {
6
+ object_fit: T
7
+ }
8
+
9
+ impl YObjectFit {
10
+ pub fn new(object_fit: T) -> Self {
11
+ Self { object_fit }
12
+ }
13
+
14
+ pub fn value(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Id {
15
+ match rb_self.object_fit {
16
+ T::Fill => ruby.intern("fill"),
17
+ T::Contain => ruby.intern("contain"),
18
+ T::Cover => ruby.intern("cover"),
19
+ T::ScaleDown => ruby.intern("scale_down"),
20
+ T::None => ruby.intern("none"),
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,40 @@
1
+ use magnus::{DataTypeFunctions, Ruby, TypedData, Value, gc, typed_data};
2
+ use style::values::{generics::position::Position, specified::{PositionComponent, position::{HorizontalPositionKeyword, VerticalPositionKeyword}}};
3
+
4
+ use crate::{cached_value::CachedValue, declarations::{horizontal_position_component::make_horizontal_position_component, vertical_position_component::make_vertical_position_component}};
5
+
6
+ #[derive(TypedData)]
7
+ #[magnus(class = "Yass::Declarations::ObjectPosition", mark)]
8
+ pub struct YObjectPosition {
9
+ horizontal: CachedValue<PositionComponent<HorizontalPositionKeyword>>,
10
+ vertical: CachedValue<PositionComponent<VerticalPositionKeyword>>,
11
+ }
12
+
13
+ impl YObjectPosition {
14
+ pub fn new(position: Box<Position<PositionComponent<HorizontalPositionKeyword>, PositionComponent<VerticalPositionKeyword>>>) -> Self {
15
+ let position = *position;
16
+ Self {
17
+ horizontal: CachedValue::new(position.horizontal, |component, ruby| {
18
+ make_horizontal_position_component(component, ruby)
19
+ }),
20
+ vertical: CachedValue::new(position.vertical, |component, ruby| {
21
+ make_vertical_position_component(component, ruby)
22
+ }),
23
+ }
24
+ }
25
+
26
+ pub fn horizontal(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
27
+ rb_self.horizontal.get(ruby)
28
+ }
29
+
30
+ pub fn vertical(ruby: &Ruby, rb_self: typed_data::Obj<Self>) -> Value {
31
+ rb_self.vertical.get(ruby)
32
+ }
33
+ }
34
+
35
+ impl DataTypeFunctions for YObjectPosition {
36
+ fn mark(&self, marker: &gc::Marker) {
37
+ self.horizontal.mark(marker);
38
+ self.vertical.mark(marker);
39
+ }
40
+ }