[−][src]Function cetkaik_kiaak::body::movement::parse
pub fn parse(s: &str) -> IResult<&str, Move>
Examples:
use cetkaik_kiaak::body::movement::{parse, Move}; use cetkaik_core::Profession; use cetkaik_core::absolute::*; assert_eq!( parse("XU兵XY無撃裁"), Ok(( "", Move::NoStepAndNoStick { src: (Row::U, Column::X), prof: Some(Profession::Kauk2), dest: (Row::Y, Column::X), } )) ); assert_eq!( parse("LY弓ZY水或此無"), Ok(( "", Move::NoStepAndWaterStick { src: (Row::Y, Column::L), prof: Some(Profession::Gua2), dest: (Row::Y, Column::Z), water_stick_size: None, water_stick_successful: false, } )) ); assert_eq!( parse("LY弓ZY水一此無"), Ok(( "", Move::NoStepAndWaterStick { src: (Row::Y, Column::L), prof: Some(Profession::Gua2), dest: (Row::Y, Column::Z), water_stick_size: Some(1), water_stick_successful: false, } )) ); assert_eq!( parse("LY弓ZY水五"), Ok(( "", Move::NoStepAndWaterStick { src: (Row::Y, Column::L), prof: Some(Profession::Gua2), dest: (Row::Y, Column::Z), water_stick_size: Some(5), water_stick_successful: true, } )) ); assert_eq!( parse("LY弓ZY水或"), Ok(( "", Move::NoStepAndWaterStick { src: (Row::Y, Column::L), prof: Some(Profession::Gua2), dest: (Row::Y, Column::Z), water_stick_size: None, water_stick_successful: true, } )) ); assert_eq!( parse("XU兵XYXAU無撃裁"), Ok(( "", Move::StepAndNoStick { src: (Row::U, Column::X), prof: Some(Profession::Kauk2), step: (Row::Y, Column::X), dest: (Row::AU, Column::X) } )) ); assert_eq!( parse("NY巫CYCO水五"), Ok(( "", Move::StepAndWaterStick { src: (Row::Y, Column::N), prof: Some(Profession::Tuk2), step: (Row::Y, Column::C), dest: (Row::O, Column::C), water_stick_size: Some(5), water_stick_successful: true, } )) ); assert_eq!( parse("ME弓MIMU橋四"), Ok(( "", Move::StepAndBridgeStick { src: (Row::E, Column::M), prof: Some(Profession::Gua2), step: (Row::I, Column::M), dest: (Row::U, Column::M), bridge_stick_size: Some(4), bridge_stick_successful: true, } )) ); assert_eq!( parse("ME弓MIMY橋或"), Ok(( "", Move::StepAndBridgeStick { src: (Row::E, Column::M), prof: Some(Profession::Gua2), step: (Row::I, Column::M), dest: (Row::Y, Column::M), bridge_stick_size: None, bridge_stick_successful: true, } )) ); assert_eq!( parse("ME弓MIMY橋或此無"), Ok(( "", Move::StepAndBridgeStick { src: (Row::E, Column::M), prof: Some(Profession::Gua2), step: (Row::I, Column::M), dest: (Row::Y, Column::M), bridge_stick_size: None, bridge_stick_successful: false, } )) ); assert_eq!( parse("ME弓MIMY橋一此無"), Ok(( "", Move::StepAndBridgeStick { src: (Row::E, Column::M), prof: Some(Profession::Gua2), step: (Row::I, Column::M), dest: (Row::Y, Column::M), bridge_stick_size: Some(1), bridge_stick_successful: false, } )) ); assert_eq!( parse("ME弓MIMY橋無此無"), Ok(( "", Move::StepAndBridgeStick { src: (Row::E, Column::M), prof: Some(Profession::Gua2), step: (Row::I, Column::M), dest: (Row::Y, Column::M), bridge_stick_size: Some(0), bridge_stick_successful: false, } )) ); assert_eq!( parse("LO弓NOCO橋四水五"), Ok(( "", Move::StepAndBridgeStickAndWaterStick { src: (Row::O, Column::L), prof: Some(Profession::Gua2), step: (Row::O, Column::N), dest: (Row::O, Column::C), bridge_stick_size: Some(4), water_stick_size: Some(5), water_stick_successful: true, } )) ); assert_eq!( parse("LO弓NOCO橋四水一此無"), Ok(( "", Move::StepAndBridgeStickAndWaterStick { src: (Row::O, Column::L), prof: Some(Profession::Gua2), step: (Row::O, Column::N), dest: (Row::O, Column::C), bridge_stick_size: Some(4), water_stick_size: Some(1), water_stick_successful: false, } )) ); assert_eq!( parse("黒弓MY"), Ok(( "", Move::Parachute { color: cetkaik_core::Color::Huok2, prof: Profession::Gua2, dest: (Row::Y, Column::M), } )) ); assert_eq!( parse("赤車CI"), Ok(( "", Move::Parachute { color: cetkaik_core::Color::Kok1, prof: Profession::Kaun1, dest: (Row::I, Column::C), } )) ); assert_eq!( parse("KE皇KI"), Ok(( "", Move::TamNoStep { src: (Row::E, Column::K), first_dest: None, second_dest: (Row::I, Column::K), } )) ); assert_eq!( parse("KE皇[或]KI"), Ok(( "", Move::TamNoStep { src: (Row::E, Column::K), first_dest: None, second_dest: (Row::I, Column::K), } )) ); assert_eq!( parse("KE皇[LE]KI"), Ok(( "", Move::TamNoStep { src: (Row::E, Column::K), first_dest: Some((Row::E, Column::L)), second_dest: (Row::I, Column::K), } )) ); assert_eq!( parse("PAU皇CAIMAU"), Ok(( "", Move::TamStepUnspecified { src: (Row::AU, Column::P), step: (Row::AI, Column::C), second_dest: (Row::AU, Column::M), } )) ); assert_eq!( parse("PAU皇[MAU]CAIMAU"), Ok(( "", Move::TamStepDuringLatter { src: (Row::AU, Column::P), first_dest: Some((Row::AU, Column::M)), step: (Row::AI, Column::C), second_dest: (Row::AU, Column::M), } )) ); assert_eq!( parse("PAU皇[或]CAIMAU"), Ok(( "", Move::TamStepDuringLatter { src: (Row::AU, Column::P), first_dest: None, step: (Row::AI, Column::C), second_dest: (Row::AU, Column::M), } )) ); assert_eq!( parse("KE皇LI[KE]KA"), Ok(( "", Move::TamStepDuringFormer { src: (Row::E, Column::K), step: (Row::I, Column::L), first_dest: Some((Row::E, Column::K)), second_dest: (Row::A, Column::K), } )) ); assert_eq!( parse("KE皇LI[或]KA"), Ok(( "", Move::TamStepDuringFormer { src: (Row::E, Column::K), step: (Row::I, Column::L), first_dest: None, second_dest: (Row::A, Column::K), } )) );