Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Rebol Programming/face

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

USAGE: EXTRACT series width /index pos /default value /into output DESCRIPTION: Extracts a value from a series at regular intervals. EXTRACT is a function value. ARGUMENTS series -- (Type: series) width -- Size of each entry (the skip) (Type: integer) REFINEMENTS /index -- Extract from an offset position pos -- The position (Type: any) /default -- Use a default value instead of none value -- The value to use (will be called each time if a function) (Type: any) /into -- Insert into a buffer instead (returns position after insert) output -- The buffer series (modified) (Type: series) (SPECIAL ATTRIBUTES) catch SOURCE CODE extract: func [ {Extracts a value from a series at regular intervals.} [catch] series [series!] width [integer!] "Size of each entry (the skip)" /index "Extract from an offset position" pos "The position" [number! logic! block!] /default "Use a default value instead of none" value {The value to use (will be called each time if a function)} /into {Insert into a buffer instead (returns position after insert)} output [series!] "The buffer series (modified)" /local len val ][ if zero? width [return any [output make series 0]] len: either positive? width [ divide length? series width ] [ divide index? series negate width ] unless index [pos: 1] either block? pos [ if empty? pos [return any [output make series 0]] parse pos [some [number! | logic! | set pos skip ( throw-error 'script 'expect-set reduce [[number! logic!] type? get/any 'pos] )]] unless into [output: make series len * length? pos] if all [not default any-string? output] [value: copy ""] if binary? series [series: as-string series] forskip series width [forall pos [ if none? set/any 'val pick series pos/1 [set/any 'val value] output: insert/only output get/any 'val ]] ] [ unless into [output: make series len] if all [not default any-string? output] [value: copy ""] if binary? series [series: as-string series] forskip series width [ if none? set/any 'val pick series pos [set/any 'val value] output: insert/only output get/any 'val ] ] either into [output] [head output] ]