Skip to content

Commit

Permalink
Remove tag
Browse files Browse the repository at this point in the history
  • Loading branch information
sile committed Sep 20, 2023
1 parent bc88c6c commit a8f12b0
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 86 deletions.
16 changes: 0 additions & 16 deletions pati/src/canvas.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,6 @@ impl VersionedCanvas {
self.canvas.pixels()
}

pub fn tags(&self) -> &BTreeMap<String, Version> {
self.canvas.tags()
}

pub fn anchors(&self) -> &BTreeMap<String, Point> {
self.canvas.anchors()
}
Expand Down Expand Up @@ -70,7 +66,6 @@ impl VersionedCanvas {
#[derive(Debug, Default, Clone)]
pub struct Canvas {
pixels: BTreeMap<Point, Color>,
tags: BTreeMap<String, Version>,
anchors: BTreeMap<String, Point>,
metadata: BTreeMap<String, serde_json::Value>,
}
Expand All @@ -95,10 +90,6 @@ impl Canvas {
&self.pixels
}

pub fn tags(&self) -> &BTreeMap<String, Version> {
&self.tags
}

pub fn anchors(&self) -> &BTreeMap<String, Point> {
&self.anchors
}
Expand All @@ -110,13 +101,6 @@ impl Canvas {
pub fn apply(&mut self, command: &Command) -> bool {
match command {
Command::Patch(c) => self.handle_patch_command(c),
Command::Tag { name, version } => {
if let Some(version) = *version {
self.tags.insert(name.clone(), version) != Some(version)
} else {
self.tags.remove(name).is_some()
}
}
Command::Anchor { name, point } => {
if let Some(point) = *point {
self.anchors.insert(name.clone(), point) != Some(point)
Expand Down
11 changes: 1 addition & 10 deletions pati/src/command.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::{Color, Point, Version};
use crate::{Color, Point};
use serde::{Deserialize, Serialize};
use std::{
collections::BTreeMap,
Expand All @@ -9,11 +9,6 @@ use std::{
#[serde(rename_all = "snake_case")]
pub enum Command {
Patch(PatchCommand),
// TODO: remove
Tag {
name: String,
version: Option<Version>,
},
Anchor {
name: String,
point: Option<Point>,
Expand Down Expand Up @@ -44,10 +39,6 @@ impl Command {
Self::patch(entries.into_values().collect())
}

pub fn tag(name: String, version: Option<Version>) -> Self {
Self::Tag { name, version }
}

pub fn anchor(name: String, point: Option<Point>) -> Self {
Self::Anchor { name, point }
}
Expand Down
26 changes: 4 additions & 22 deletions src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -211,15 +211,12 @@ pub struct IncludeCommand {
#[clap(long)]
end_anchor: Option<String>,

#[clap(long)]
tag: Option<String>,

include_file: PathBuf,
}

impl IncludeCommand {
fn run(&self) -> orfail::Result<()> {
let canvas = load_canvas(&self.include_file, self.tag.as_ref()).or_fail()?;
let canvas = load_canvas(&self.include_file).or_fail()?;
let mut start = Point::new(i16::MIN, i16::MIN);
let mut end = Point::new(i16::MAX, i16::MAX);
if let Some(anchor) = &self.start_anchor {
Expand Down Expand Up @@ -322,7 +319,7 @@ impl ExportCommand {
.output
.clone()
.unwrap_or_else(|| self.path.with_extension("bmp"));
let canvas = load_canvas(&self.path, None).or_fail()?;
let canvas = load_canvas(&self.path).or_fail()?;

let mut start = Point::new(0, 0);
let mut end = Point::new(0, 0);
Expand All @@ -347,29 +344,14 @@ impl ExportCommand {
}
}

fn load_canvas<P: AsRef<Path>>(path: &P, tag: Option<&String>) -> orfail::Result<pati::Canvas> {
fn load_canvas<P: AsRef<Path>>(path: &P) -> orfail::Result<pati::Canvas> {
let file = std::fs::File::open(path).or_fail()?;
let mut reader = CommandReader::new(BufReader::new(file));
let mut canvas = pati::Canvas::new();
let mut tagged_canvas = None;
while let Some(command) = reader.read_command().or_fail()? {
if let Some(tag) = tag {
if let pati::Command::Tag { name, .. } = &command {
if name == tag {
tagged_canvas = Some(canvas.clone());
}
}
}

canvas.apply(&command);
}
if let Some(tag) = tag {
Ok(tagged_canvas
.take()
.or_fail_with(|()| format!("No such tag: {tag}"))?)
} else {
Ok(canvas)
}
Ok(canvas)
}

#[derive(Debug, clap::Subcommand)]
Expand Down
9 changes: 0 additions & 9 deletions src/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@ pub enum Command {
Scale(i8),
Center(CenterPoint),
Anchor(String),
Tag(String),
BackgroundColor(Color),
Checkout(Checkout),
Import(Vec<(Point, Color)>),
Embed(Frame),
Tick(i32),
Expand Down Expand Up @@ -55,12 +53,6 @@ pub enum CenterPoint {
Anchor(String),
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Checkout {
Tag(String),
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PlayCommand {
#[serde(default)]
Expand All @@ -74,7 +66,6 @@ pub struct PlayCommand {
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum RemoveTarget {
Tag(String),
Anchor(String),
Frame(String),
}
Expand Down
31 changes: 2 additions & 29 deletions src/model.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use crate::{
clock::{Ticks, Time},
command::{
CenterPoint, Checkout, Command, ExternalCommand, FlipDirection, MoveDestination,
PlayCommand, RemoveTarget,
CenterPoint, Command, ExternalCommand, FlipDirection, MoveDestination, PlayCommand,
RemoveTarget,
},
editor::Editor,
frame::{EmbeddedFrame, Frame},
Expand Down Expand Up @@ -159,9 +159,7 @@ impl Model {
Command::Scale(c) => self.handle_scale_command(*c),
Command::Center(c) => self.handle_center_command(c),
Command::Anchor(c) => self.handle_anchor_command(c),
Command::Tag(c) => self.handle_tag_command(c),
Command::BackgroundColor(c) => self.handle_background_color_command(*c),
Command::Checkout(c) => self.handle_checkout_command(c),
Command::Import(c) => self.handle_import_command(c),
Command::Embed(c) => self.handle_embed_command(c),
Command::Tick(c) => self.handle_tick_command(*c),
Expand Down Expand Up @@ -217,9 +215,6 @@ impl Model {

fn handle_remove_command(&mut self, target: &RemoveTarget) {
match target {
RemoveTarget::Tag(name) => {
self.canvas.apply(&pati::Command::tag(name.clone(), None));
}
RemoveTarget::Anchor(name) => {
self.canvas
.apply(&pati::Command::anchor(name.clone(), None));
Expand Down Expand Up @@ -261,22 +256,6 @@ impl Model {
self.fsm = Fsm::Editing(Editor::new(pixels.iter().cloned().collect()));
}

fn handle_checkout_command(&mut self, checkout: &Checkout) {
match checkout {
Checkout::Tag(name) => {
if let Some(command) = self
.canvas
.tags()
.get(name)
.copied()
.and_then(|version| self.canvas.diff(version))
{
self.canvas.apply(&pati::Command::Patch(command));
}
}
}
}

fn handle_background_color_command(&mut self, color: Color) {
if self.background_color != color {
self.background_color = color;
Expand All @@ -293,12 +272,6 @@ impl Model {
self.canvas.apply(&command);
}

fn handle_tag_command(&mut self, name: &str) {
let version = self.canvas.version();
let command = pati::Command::tag(name.to_owned(), Some(version));
self.canvas.apply(&command);
}

fn handle_center_command(&mut self, point: &CenterPoint) {
match point {
CenterPoint::Cursor => {
Expand Down

0 comments on commit a8f12b0

Please sign in to comment.