Method: OpenHAB::Core::Items::Registry#remove

Defined in:
lib/openhab/core/items/registry.rb

#remove(item_name, recursive: false) ⇒ Item?

Remove an item.

The item must be a managed item (typically created by Ruby or in the UI).

Any associated metadata or channel links are also removed.

Parameters:

  • item_name (String, Item)
  • recursive (true, false) (defaults to: false)

    Remove the item’s members if it’s a group

Returns:

  • (Item, nil)

    The removed item, if found.



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/openhab/core/items/registry.rb', line 70

def remove(item_name, recursive: false)
  item_name = item_name.name if item_name.is_a?(Item)
  provider = Provider.registry.provider_for(item_name)
  unless provider.is_a?(ManagedProvider)
    raise "Cannot remove item #{item_name} from non-managed provider #{provider.inspect}"
  end

  Metadata::Provider.registry.providers.grep(ManagedProvider).each do |managed_provider|
    managed_provider.(item_name)
  end

  Things::Links::Provider.registry.providers.grep(ManagedProvider).each do |managed_provider|
    managed_provider.remove_links_for_item(item_name) if managed_provider.respond_to?(:remove_links_for_item)
  end
  provider.remove(item_name, recursive)
end