Skip to main content

wowlab_parsers/
lib.rs

1#![expect(
2    clippy::multiple_crate_versions,
3    reason = "feature-complete parser builds include independently versioned transitive crypto, CSV, and proc-macro dependencies"
4)]
5
6//! Parsers and data transforms used across `WoW Lab`.
7//!
8//! ```
9//! use wowlab_parsers::parse_csv_list;
10//!
11//! assert_eq!(
12//!     parse_csv_list("  haste, mastery ,, crit  "),
13//!     ["haste", "mastery", "crit"]
14//! );
15//! ```
16
17mod parsers;
18
19#[doc(hidden)]
20pub mod _private {
21    pub use paste;
22}
23
24pub use parsers::{
25    AccessControl, AccessRule, Character, CrossSpellEffectCopy, EffectPrecisionScale,
26    EffectValueResolver, GameDataResolver, Item, Loadout, NullResolver, ParseAccessError,
27    ParsedSpellDescription, PlayerStateResolver, Profession, Profile, SimcParseError,
28    SpecConditionalEffects, SpellDescParseResult, SpellDescResolver, SpellDescriptionNode,
29    SpellKnowledgeContext, SpellTextResolver, Talents, TestResolver, TokenStream, VariableNode,
30    WowClass, analyze_spell_desc_dependencies, get_bonus_description, get_stat_budget,
31    get_stat_name, interpolate_curve, inventory_type_to_slot_index, parcel, parse_access_control,
32    parse_csv_list, parse_simc, parse_spell_desc, render_global_string, render_spell_desc,
33    resolve_item, spell_desc_crit_chance_scaled_effect_index,
34    spell_desc_cross_spell_precision_copies, spell_desc_effect_precision_scales,
35    spell_desc_precision_rendered_effect_indexes, spell_desc_spec_conditional_effects,
36};
37#[cfg(feature = "dbc")]
38pub use parsers::{
39    ContentTuningRow, ContentTuningXDifficultyRow, ContentTuningXExpectedRow,
40    CreatureDifficultyRow, CreatureRow, DbcData, DbcError, ExpectedStatModRow, GameTable,
41    MIDNIGHT_EXPANSION_ID, OMNIUM_SYSTEM, OMNIUM_TRAIT_TREE_ID, RotationOverlayError,
42    TransformError, apply_rotation_overlay, assisted_spell_overrides, transform_all_armor_location,
43    transform_all_challenge_mode_item_bonus_overrides, transform_all_classes,
44    transform_all_content_tuning_x_difficulty, transform_all_content_tuning_x_expected,
45    transform_all_content_tunings, transform_all_cooldown_sets, transform_all_crafted_products,
46    transform_all_creature_difficulties, transform_all_creatures, transform_all_currencies,
47    transform_all_currency_categories, transform_all_curve_points, transform_all_curves,
48    transform_all_delves_seasons, transform_all_difficulties, transform_all_enchantments,
49    transform_all_expansion_trait_trees, transform_all_expected_stat_mods,
50    transform_all_expected_stats, transform_all_gem_properties, transform_all_global_colors,
51    transform_all_global_strings, transform_all_item_armor_quality,
52    transform_all_item_armor_shield, transform_all_item_armor_total,
53    transform_all_item_bonus_list_groups, transform_all_item_bonus_sequence_spells,
54    transform_all_item_bonuses, transform_all_item_conversions, transform_all_item_damage_scaling,
55    transform_all_item_drop_scaling, transform_all_item_group_ilvl_scaling_entries,
56    transform_all_item_level_selector_qualities, transform_all_item_level_selector_quality_sets,
57    transform_all_item_level_selectors, transform_all_item_offset_curves,
58    transform_all_item_scaling_configs, transform_all_item_squish_eras, transform_all_items,
59    transform_all_journal_instances, transform_all_journal_tiers,
60    transform_all_mythic_plus_seasons, transform_all_permanent_enchants, transform_all_power_types,
61    transform_all_professions, transform_all_pvp_seasons, transform_all_pvp_tiers,
62    transform_all_racial_spells, transform_all_rand_prop_points,
63    transform_all_specialization_spells, transform_all_specs, transform_all_spells,
64    transform_all_trait_trees, transform_armor_mitigation_by_lvl, transform_assisted_rotation,
65    transform_assisted_rotations, transform_base_mp, transform_base_profession_ratings,
66    transform_challenge_mode_damage, transform_challenge_mode_health, transform_class,
67    transform_combat_ratings, transform_combat_ratings_mult_by_ilvl, transform_global_color,
68    transform_global_string, transform_hp_per_sta, transform_item,
69    transform_item_socket_cost_per_level, transform_npc_damage_by_class, transform_npc_total_hp,
70    transform_profession_ratings, transform_spec, transform_spell, transform_spell_scaling,
71    transform_stamina_mult_by_ilvl, transform_trait_tree,
72};
73#[cfg(feature = "crypto")]
74pub use parsers::{
75    CryptoError, CryptoInput, NodeKeypair, build_sign_message, keypair_from_base64, sha256_hex,
76    verify_signature, verify_signature_base64,
77};
78#[cfg(feature = "wasm")]
79pub use parsers::{
80    WasmAnalyzeResult, wasm_analyze_spell_desc, wasm_render_spell_desc_with_data,
81    wasm_tokenize_spell_desc,
82};