<aside> 👉 Links (Property base class)

Property

ButtonProperty

CreatedTimeProperty

FilesProperty

LastEditedTimeProperty

PeopleProperty

RichTextProperty

StatusProperty

UrlProperty

CheckboxProperty

DateProperty

FormulaProperty

MultiSelectProperty

PhoneNumberProperty

RollupProperty

TitleProperty

VerificationProperty

CreatedByProperty

EmailProperty

LastEditedByProperty

NumberProperty

RelationProperty

SelectProperty

UniqueIdProperty

Notion Ruby Mapping Public API Reference

</aside>

<aside> 💡

[P] means methods for Page Property, [DB/DS] means methods for Database or DataSource Property.

</aside>

1. Instance methods

[P] self[num] → RichTextObject

self[num] delegates to included @text_object[num].

  1. self[num] of Page property returns a RichTextObject corresponded to num

  2. self[num] of Database property returns nil, because @text_object of the property is {}.

    page.properties["TextTitle"][0]
    # => #<NotionRubyMapping::TextObject:...>
    
    db.properties["TextTitle"][0]
    # => nil
    

[P] self << to → RichTextObject

self << to delegates to included @text_object << to. If the argument is a String, it is converted to RichTextObject and append to @text_object. This method returns generated or given RichTextObject.

prtp = page.properties["TextTitle"]
prtp << "Added text"
=> #<NotionRubyMapping::TextObject:0x000000010fc60d80 @options={"plain_text"=>"Added text"}, @text="Added text", @type="text", @will_update=false>
prtp.full_text
=> "new textAdded text"

prtp << MentionObject.new("template_mention" => "now")
=> => #<NotionRubyMapping::MentionObject:0x00000001100d2620 @options={"template_mention"=>"now"}, @type="mention">

[P] self.each { |item| ...} → self

[P] self.each → Enumerator

self.each delegates to included @text_object.each. Since RichTextProperty includes Enumerable, other Enumerable methods can be used.

prtp = page.properties["TextTitle"]
prtp.count
# => 1
prtp.map(&:text)
# => ["new text"]

filter_contains(value) → Query

filter_contains creates a Query object for contains filter.

ds.properties["CreatedByTitle"].filter_contains "a_user_id"
# => #<NotionRubyMapping::Query:0x0000000110525498 @filter={"property"=>"CreatedByTitle", "created_by"=>{"contains"=>"a_user_id"}}, @page_size=100, @sort=[], @start_cursor=nil>

### only RollupProperty (none, any, every)
ds.properties["RollupTitle"].filter_contains "abc", condition: "any", another_type: "rich_text"
# => #<NotionRubyMapping::Query:0x0000000105394f30 @filter={"property"=>"RollupTitle", "any"=>{"rich_text"=>{"contains"=>"abc"}}}, @page_size=100, @sort=[], @start_cursor=nil>

filter_does_not_contain(value) → Query

filter_does_not_equal(value) → Query

filter_ends_with(str) → Query

filter_ends_with(str) creates a Query object for ends_with filter.

ds.properties["MailTitle"].filter_ends_with "ac.jp"
=> #<NotionRubyMapping::Query:0x0000000105281b48 @filter={"property"=>"MailTitle", "email"=>{"ends_with"=>"ac.jp"}}, @page_size=100, @sort=[], @start_cursor=nil>

### only RollupProperty (none, any, every)
ds.properties["RollupTitle"].filter_ends_with "abc", condition: "none", another_type: "rich_text"
# => #<NotionRubyMapping::Query:0x00000001054d9558 @filter={"property"=>"RollupTitle", "none"=>{"rich_text"=>{"ends_with"=>"abc"}}}, @page_size=100, @sort=[], @start_cursor=nil>

filter_equals(value) → Query

filter_is_not_empty → Query