Skip to content
Permalink
Browse files

Implement CharacterData.{deleteData, insertData, replaceData}

  • Loading branch information...
lpy committed Apr 20, 2014
1 parent bb8a037 commit fd9541357f3b271577f87a4761759545604c803e
@@ -9,6 +9,7 @@ use js::glue::{ReportError};

#[deriving(Show)]
pub enum Error {
IndexSize,
FailureUnknown,
NotFound,
HierarchyRequest,
@@ -6,7 +6,7 @@

use dom::bindings::codegen::InheritTypes::CharacterDataDerived;
use dom::bindings::js::JS;
use dom::bindings::error::{Fallible, ErrorResult};
use dom::bindings::error::{Fallible, ErrorResult, IndexSize};
use dom::bindings::utils::{Reflectable, Reflector};
use dom::document::Document;
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
@@ -59,6 +59,32 @@ impl CharacterData {
self.data.push_str(arg);
Ok(())
}

pub fn InsertData(&mut self, offset: u32, arg: DOMString) -> ErrorResult {
self.ReplaceData(offset, 0, arg)
}

pub fn DeleteData(&mut self, offset: u32, count: u32) -> ErrorResult {
self.ReplaceData(offset, count, ~"")
}

pub fn ReplaceData(&mut self, offset: u32, count: u32, arg: DOMString) -> ErrorResult {
let length = self.data.len() as u32;
if offset > length {
return Err(IndexSize);
}
let count = if offset + count > length {
length - offset
} else {
count
};
let mut data = self.data.slice(0, offset as uint).to_owned();
data.push_str(arg);
data.push_str(self.data.slice((offset + count) as uint, length as uint));
self.data = data;
// FIXME: Once we have `Range`, we should implement step7 to step11
Ok(())
}
}

impl Reflectable for CharacterData {
@@ -17,6 +17,12 @@ interface CharacterData : Node {
DOMString substringData(unsigned long offset, unsigned long count);
[Throws]
void appendData(DOMString data);
[Throws]
void insertData(unsigned long offset, DOMString data);
[Throws]
void deleteData(unsigned long offset, unsigned long count);
[Throws]
void replaceData(unsigned long offset, unsigned long count, DOMString data);
};

//CharacterData implements ChildNode;

5 comments on commit fd95413

@bors-servo

This comment has been minimized.

Copy link
Contributor

replied Apr 21, 2014

saw approval from Ms2ger
at lpy@fd95413

@bors-servo

This comment has been minimized.

Copy link
Contributor

replied Apr 21, 2014

merging lpy/servo/issue2190 = fd95413 into auto

@bors-servo

This comment has been minimized.

Copy link
Contributor

replied Apr 21, 2014

lpy/servo/issue2190 = fd95413 merged ok, testing candidate = 3c175c7

@bors-servo

This comment has been minimized.

Copy link
Contributor

replied Apr 21, 2014

fast-forwarding master to auto = 3c175c7

Please sign in to comment.
You can’t perform that action at this time.